在PHP中取消上传文件

在PHP中取消上传文件,php,forms,web-applications,csv,Php,Forms,Web Applications,Csv,我有一个表单,用来接收上传的.csv文件,解析它并将数据插入Apache服务器上的MySQL数据库。页面首先检查是否有上载的文件。如果有,则处理数据,如果没有,则显示下表 <form enctype="multipart/form-data" action="uploadfaculty.php" method="POST" id="UploadForm"> Choose a file to upload: <input name="uploadedfile" type="fil

我有一个表单,用来接收上传的.csv文件,解析它并将数据插入Apache服务器上的MySQL数据库。页面首先检查是否有上载的文件。如果有,则处理数据,如果没有,则显示下表

<form enctype="multipart/form-data" action="uploadfaculty.php" method="POST" id="UploadForm">
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>

我甚至通过Javascript重新设置了表单,我知道这是行不通的,但这样做只是为了消除所有疑问。都没有用。我肯定我错过了一些简单的东西……几乎总是这样。有什么想法吗?

您可以在处理后将它们重定向到该上传页面,以防止post数据通过刷新继续进入。但处理完成后,应清除临时文件。除非使用move_uploaded_file函数,否则PHP不会保留该文件

您可以在处理后将它们重定向到该上传页面,以防止post数据通过刷新继续进入。但处理完成后,应清除临时文件。除非使用move_uploaded_file函数,否则PHP不会保留该文件

这并不令人不安,因为post操作存储在浏览器端,并在很短的时间内重新上传,因为当它们点击F5时,它只是一个csv。这与他们使用表单上传另一个csv基本相同

您可以这样做:

if (isset($_POST['csv'])){
 $DataProcessed = DataProcessingFunction();
}

if (isset($DataProcessed) && $DataProcessed){
  header("Location: /path/to/form/page.php");
  exit();
}

这将清除先前请求中发送的post数据。刷新将不会重新提交表单。

这不会取消设置,因为post操作存储在浏览器端,并在短时间内重新上载,因为当点击F5时,它只是一个csv。这与他们使用表单上传另一个csv基本相同

您可以这样做:

if (isset($_POST['csv'])){
 $DataProcessed = DataProcessingFunction();
}

if (isset($DataProcessed) && $DataProcessed){
  header("Location: /path/to/form/page.php");
  exit();
}

这将清除先前请求中发送的post数据。刷新将不会重新提交表单。

您所说的“处理完成后应清除临时文件”到底是什么意思?你的意思是说一旦我的脚本运行了,我失去了$handle,它就应该消失了吗?如果是这样的话,那么如果我能刷新我的浏览器,数据就可以被发现、解析并重新插入,那么肯定会有其他可疑的事情发生。这里有一个测试页面:headerlocation:thankyou.php是一个很好的页面,但是我不想这样做,因为还有另一种方法。$\u文件数组不会由用户在以前的请求中上载的文件填充。如果他们点击F5并刷新,则每次都会上载文件。您需要将它们发送到其他页面,以防止重新提交请求。不过,这并不能阻止他们使用back。我的意思是,服务器上应该只有该文件的一个副本。PHP完成处理后,该临时文件将被清除和删除。这只是意味着它不会占用您的磁盘空间。但是,如果他们继续按refresh,就会占用您的带宽。因此,重定向到感谢页面或仅仅重定向到同一上传页面本身应该会清除帖子数据。好的,感谢对临时文件存储的澄清,我想这就是你的意思。我想停留在同一页上,思考“处理完成后应清除临时文件”的确切含义是什么?你的意思是说一旦我的脚本运行了,我失去了$handle,它就应该消失了吗?如果是这样的话,那么如果我能刷新我的浏览器,数据就可以被发现、解析并重新插入,那么肯定会有其他可疑的事情发生。这里有一个测试页面:headerlocation:thankyou.php是一个很好的页面,但是我不想这样做,因为还有另一种方法。$\u文件数组不会由用户在以前的请求中上载的文件填充。如果他们点击F5并刷新,则每次都会上载文件。您需要将它们发送到其他页面,以防止重新提交请求。不过,这并不能阻止他们使用back。我的意思是,服务器上应该只有该文件的一个副本。PHP完成处理后,该临时文件将被清除和删除。这只是意味着它不会占用您的磁盘空间。但是,如果他们继续按refresh,就会占用您的带宽。因此,重定向到感谢页面或仅仅重定向到同一上传页面本身应该会清除帖子数据。好的,感谢对临时文件存储的澄清,我想这就是你的意思。不过我还是想保持一致