文件上传循环的未指定错误

Unspecified error with a file upload loop

我正在使用一个表单和一个循环将多个图像文件直接上传到文件服务器,但是我使用 move_uploaded_file 函数得到了一个错误的结果。

上传表格:

<body>
    <p>
        <form action='uploadform.php' method='post' enctype='multipart/form-data'>
            Select the files you would like to upload.
            <input type='file' name='fileToUpload[]' id='fileToUpload' mozdirectory webkitdirectory directory multiple />
            <input type='submit' value='Upload Image' name='submit'>
        </form><br>
    The files will be uploaded to a folder named '".$_SESSION['filename']."'.<br>
    </p>
</body>

多文件上传循环(uploadform.php:

if (isset($_POST["submit"])) {
    foreach ($_FILES['fileToUpload']['name'] as $i => $name) {
        $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"][$i]);
        $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

        if (strlen($_FILES['fileToUpload']['name'][$i]) > 1) {
            if (move_uploaded_file($_FILES["fileToUpload"]["name"][$i], $target_file)) {
                echo basename($_FILES["fileToUpload"]["name"][$i]);
            } 
            else {
                echo "Error! File basename: ".basename($_FILES["fileToUpload"]["name"][$i])."<br>";
            }
            $count++;
        }

    }

}

当使用表单上传一个或多个文件时,它会转到响应 "ERROR" 字符串的 else 语句。 Apache 错误日志显示为空白,所以我不知道代码有什么问题。

我尝试回显循环中使用的变量($_FILES["fileToUpload"]["name"][$i]、$target_file 和 $imageFileType),但这些似乎没事。

我会将整个 foreach 循环放在 try-catch 块中,看看如果发生任何异常会怎样:

try{
     // your foreach loop here:
    }
catch(\Exception $e)
{
  echo $e->getMessage();
 }

$_FILES["fileToUpload"]["name"][$i] 变量不是循环应该使用的变量。

通过将 $_FILES["fileToUpload"]["name"][$i] 的所有实例更改为 $name(即 $_FILES["fileToUpload"]["tmp_name"][$i]),错误消失了。