我的情况很简单:有些文件是通过html格式上传的, POST 方法,并调用了upload.php
。
在upload.php
中,我有一些像
<?php
// line one
// blah blah
is_uploaded_file(...);
// blah blah
move_uploaded_file(...);
// blah blah
那么,当这个脚本开始执行时(到达&#39;第一行&#39;)?当我单击提交按钮或文件完全上传时?我可以调用另一个PHP脚本,并且两个脚本将同时执行吗?如果在$FILES
调用move_uploaded_file()
时未设置我在另一个脚本中循环使用的全局对象upload.php
,会发生什么?
答案 0 :(得分:1)
你的&#34;第一行&#34;上传文件后执行(或更好地说,由PHP处理,因为它们来自您的POST表单编码为multipart / form-data,请参阅here)。但是有些文件可能无法上传,并且您在$ _FILES全局数组中有错误信息,请参阅here,原因有几个。
如果文件正常,则可以在临时目录和临时名称中找到它们(因此需要调用move_uploaded_file())。
因此,您可以让两个不同的用户(或浏览器)同时提交相同的文件,但它们将被分开处理(即4个文件x 2个电话,您将获得8个临时文件),如果这样&# 39;是你的问题。
另外,根据您的问题,一个PHP执行无法取消设置$ _FILES数组以执行另一个相同的脚本。另一个故事是,如果你在调用move_uploaded_file()时结束写相同的路径和文件名,你将以4个文件结束。作为一个小建议,您必须更好地了解http请求到Web服务器的流程(在您的情况下包含文件的POST),然后由PHP脚本处理,该脚本输出对发送回给Web服务器的响应。客户端(浏览器)。
答案 1 :(得分:1)
是的,您可以同时上传多个文件,但要注意“会话阻止”。如果您的上传部分位于登录或其他内容之后,您很可能会在文件上传开始时调用session_start()
来验证用户是否已登录。
在这种情况下,上传脚本可能会阻止会话,直到处理完上传。 (即在内部移动)
所以 - 在验证会话之后,但在开始实际文件移动之前 - 您可能希望调用session_write_close();
来释放会话,并且进一步的脚本可以继续使用会话数据。
这会对文件下载产生更大的影响(如果使用getFile.php
),但也可以为上传节省几秒的等待时间。