我有一个简单的情况:一些文件正在通过 html 表单和 POST 方法上传,并且调用了 upload.php
。
在 upload.php
我有一些 php 的东西,比如
<?php
// line one
// blah blah
is_uploaded_file(...);
// blah blah
move_uploaded_file(...);
// blah blah
那么,这个脚本何时开始执行(到达“第一行”)?当我点击提交按钮或文件完全上传时?我可以调用另一个 php 脚本并且两个脚本将同时执行吗?当 upload.php
调用 move_uploaded_file()
时,如果我在另一个脚本中循环使用的全局对象 $FILES
未设置,会发生什么情况?
最佳答案
您的“第一行”在文件上传后执行(或者更好地说,由 PHP 处理,因为它们从您的 POST 表单编码为 multipart/form-data,请参阅 here )。但是某些文件可能无法上传,您将在 $_FILES 全局数组中获得错误信息,请参阅 here ,出于几个原因。
如果文件正常,将在临时目录和临时名称中找到它们(因此需要调用 move_uploaded_file())。
所以您可以让两个不同的用户(或浏览器)同时提交相同的文件,但它们将被分开处理(即 4 个文件 x 2 个调用,您将获得 8 个临时文件),如果这是您的问题。
此外,根据您的问题,一个 PHP 执行不能为另一个相同脚本的执行取消设置 $_FILES 数组。另一个故事是,如果您在调用 move_uploaded_file() 时结束写入相同的路径和文件名,您将以 4 个文件结束。作为一个小建议,您必须更好地理解对网络服务器的 http 请求流程(在您的情况下是一个带有文件的 POST),然后由您的 PHP 脚本处理,该脚本输出对发送回网络服务器的响应客户端(浏览器)。
关于php - 当 php 脚本开始执行时,通过 POST 上传文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48752486/