php上传多个文件暂停错误检查

时间:2014-08-21 06:45:37

标签: php file-upload

我正在尝试上传多个文件,方法是修改曾经用于上传单个文件的脚本。

我所做的唯一更改是向表单添加更多文件输入字段。但是当我将表单提交给脚本时,它会在我检查错误的位置停止。如何处理多个文件?

$form  = '<form action="imgProcess.php" method="post" enctype="multipart/form-data">';
$form .= '<div><input type="file" name="file[]"></div>';
$form .= '<div><input type="file" name="file[]"></div>';
$form .= '<div><input type="file" name="file[]"></div>';
$form .= '<div><input type="file" name="file[]"></div>';
$form .= '<div><input type="file" name="file[]"></div>';
$form .= '<input type="hidden" name="handle" value="testHandle" />';
$form .= '<input type="submit">';
$form .= '</form>';

imgProcess.php

if($_FILES && isset($_POST['handle'])) {

    $numFiles = count($_FILES['file']['tmp_name']);

    echo $numFiles;

    $handle = $_POST['handle'];

    echo $handle;

    // Halt on errors
    if($_FILES['file']['error'] == 0) {


    } else {
        echo 'There were errors<br>';
        print_r( $_FILES['file']['error'] );
    }
} else {
    echo 'Error 1';
}

//
There were errors
Array ( [0] => 0 [1] => 0 [2] => 4 [3] => 4 [4] => 4 )

4 个答案:

答案 0 :(得分:2)

你有5个文件元素。

虽然您已打印的错误信息中的状态代码显示您仅上传了两个文件。

Array ( [0] => 0 [1] => 0 [2] => 4 [3] => 4 [4] => 4 )
                                 ^        ^        ^

其余的都是空的,你提交了表格。 请参阅this了解详细信息。

这就是错误。 您可能必须以不同方式处理它,以便它只考虑您上传的文件。

答案 1 :(得分:1)

你可以添加属性&#34;多个&#34;到输入字段,而不是添加许多输入字段。在官方php网站上你可以找到如何上传多个文件的例子

答案 2 :(得分:1)

从所有文件中如果你想上传那些没有任何错误的文件然后使用try和catch,如果你想抛出错误,如果其中任何一个有错误,那么改变你的条件来检查这样的错误

$fileUploadError = array_filter($_FILES['file']['error']);

if(count($fileUploadError) > 0 ) { 

     echo "error";    
} else {

     echo "no error";    
}

希望这可以帮到你

答案 3 :(得分:0)

请试试这个

    $error=$_FILES['file']['error'];

for($i=0;$i<$numFiles;$i++)
{
     if($error[$i] == 0) {

        //your code
    } 
}