在使用 PHP 的过程中,您在尝试上传多个文件时遇到了障碍。让我们探讨如何通过深入研究提供的代码片段并解决问题来克服这一挑战。
HTML 文件具有一个带有文件输入字段的表单,允许进行多项选择(多个=多个)。单击按钮会触发 sendfile() 函数,启动上传过程。 sendfile() 函数创建一个 FormData 对象并迭代选定的文件,将它们附加到数据负载中。然后利用 jQuery 的 ajax() 函数将数据发送到 uploadfile.php 进行处理。
PHP 文件(uploadfile.php)定义一个目标目录,并尝试逐个移动上传的文件。
提供的代码错误地尝试一次移动每个上传的文件,这适用于单个文件,但不适用于多个选择。问题的关键在于 for 循环的构造。
适当的解决方法是使用更具包容性的 foreach 循环来迭代上传的文件。这种方法确保每个文件都被处理并移动到目标目录。
要实现这一点,需要对 uploadfile.php 进行以下调整:
<code class="php">foreach ($_FILES['myfile']['name'] as $i => $name) { if (move_uploaded_file($_FILES['myfile']['tmp_name'][$i], $target . $name)) { echo 'Successfully copied'; } else { echo 'Sorry, could not copy'; } }</code>
这个精炼版本可以正确处理多个文件通过迭代每个文件的名称和临时路径来移动文件,使它们能够单独移动。该循环确保每个选定的文件都被考虑并移动到指定的目标目录。
以上是以下是根据您的文章采用问题格式的一些文章标题: * **在 PHP 中上传多个文件:为什么 `move_uploaded_file` 失败,以及如何修复它?** * **多文件上传的详细内容。更多信息请关注PHP中文网其他相关文章!