我有一个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数据库。
答案 0 :(得分:10)
max_file_uploads
是原因。把它改成你想要的,它会起作用。
答案 1 :(得分:1)
检查post_max_size
另外
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()
。这是一种轻松搞定性能的方法。