HTML输入:上传多个文件的最大值为20

时间:2011-06-04 16:30:28

标签: php mysql input upload

我有一个html输入字段,例如

<form method="post" action="process.php" enctype="multipart/form-data">
    <div>
        <h3>Files:</h3>
        <input type="file" multiple="multiple" name="image[]" />
        <input type="submit" value="Upload Image" />
    </div>
</form>

我希望用户能够一次上传多个文件。我的php使用for循环遍历所有文件,收集每个文件的信息,然后逐个上传。

for($i = 0;$image['name'][$i] == true;$i++)
{
    //code
}

但这不会上传超过20个,以错误Notice: Undefined offset: 20 in F:\www\hdp\process.php on line 39结尾。现在,如果我要上传5张图片,它会给我Notice: Undefined offset: 5 in F:\www\hdp\process.php on line 39,但这样就可以,因为它仍会上传所有5张照片(0,1,2,3,4)。我需要它上传用户添加的所有照片 我知道一次上传大量文件可能是一个坏主意,但它只是网站管理员,它是一个摄影组合网站。因此他需要能够一次上传大量照片。如果它很重要,它们将被上传到MySQL数据库。

4 个答案:

答案 0 :(得分:10)

php.ini设置中的

max_file_uploads是原因。把它改成你想要的,它会起作用。

答案 1 :(得分:1)

检查post_max_size

的php.ini设置

另外

upload_max_filesize  
memory_limit 
max_execution_time 
max_input_time

答案 2 :(得分:1)

我对'不会上传20多个'部分感到有点困惑......你有什么基础?你看似错误。

更改你的for循环以检查isset($ image ['name'] [$ i]),而不会再出现错误。

for($i = 0; isset($image['name'][$i]); $i++)
{
    //code
}

如yes123所述,您可能会遇到最大POST大小,应该检查php.ini。

答案 3 :(得分:0)

与Fosco的解决方案类似,但工作方式不同(使用sizeof和int进行int比较而不是isset)

无论是这还是他都不一定更好,只是解决问题的方法不同。

for($i = 0, $size = sizeof($image['name']); $i < $size; $i++)
{
    //code
}

不,它每次迭代都不会运行sizeof()。这是一种轻松搞定性能的方法。