只使用PHP和HTML来像JavaScript一样工作


Using only PHP and HTML to act like JavaScript

我有一项学校作业,我不确定老师希望我们如何完成任务。

  1. 我们只需要将上传的文件作为临时文件(index.php)
  2. 文件的输出大小(upload.php)
  3. 用户可以确认是否保存文件(upload.php)

所以,我已经否决了大多数,但我的问题在于将临时文件创建为永久文件。

index.php

<html>
<form action="http://mysite.org/~me/upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file"><br />
<input type="submit" value="Now upload it!">
</form>
</html>

上传.php

<?php
if (($_FILES["file"]["type"] == "application/vnd.ms-excel"))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    }
    }
  ?>
  <form action="" method="POST">
  <input type="submit" value"YES please save">
  <form>
  <?php
  if (isset($_POST['submit']))
  {
    //Code for saving file
    echo 'File saved!';
  }
  ?>

这样做可能吗?我的最后一个echo语句不起作用,所以我怀疑文件保存是否也起作用。

希望下面的评论能帮助你解决你遇到的问题。

如果你还没有意识到这一点,那么一旦处理上传文件的PHP请求终止,任何用PHP上传的文件都会被删除。这意味着,如果您不处理上传的临时文件,那么当PHP脚本终止时,它将被删除。

您感兴趣的一个函数是move_uploaded_file(),它将把上传的临时文件移动到您选择的永久位置。

由于文件将被上传,然后你必须显示大小并要求用户确认上传,当用户尚未确认要保留上传时,你必须将临时文件移动到一个永久的临时位置。

我不确定你是否已经被介绍到会话,但如果没有,你可能需要一些隐藏的表单元素来跟踪他们上传的文件,否则你可以在会话中保留这些信息。

然后,当某人提交表格说他们想保留文件时,你可以再次将其移动到永久位置,或者如果他们拒绝,则删除文件。问题是,如果他们从不说是或否,那么文件就会保留在系统中。

希望能有所帮助。

是的,这应该有效。您的if语句将捕获表单提交,然后在那里回显您的字符串。标记中的一些小错误:

<input type="submit" value"YES please save">

应该是

<input type="submit" value="YES please save" name="submit">

PHP中的最终if语句正在查找名为"submit"的后变量,但<input type="submit">标记没有名称。

上传完成后,文件将保存到临时位置。您可以使用$_FILES['file]['tmp_name']访问此临时文件,但如果您不采取任何措施,该文件将在请求结束时被删除。这意味着当用户单击YES please save按钮时,该文件不再可用。

这意味着,当您第一次调用upload.php文件时,必须首先将文件保存到磁盘。当用户决定是否永久保存文件时,无法将文件"保存在内存中"。