我正在尝试上传多个文件,方法是修改曾经用于上传单个文件的脚本。
我所做的唯一更改是向表单添加更多文件输入字段。但是当我将表单提交给脚本时,它会在我检查错误的位置停止。如何处理多个文件?
$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 )
答案 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
}
}