我有一个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数据库中。
max_file_uploads
是原因。把它改成你想要的,它就会起作用。
我对"不会上传超过20个"部分有点困惑。。。你是基于什么?不管怎么说,你都会犯错误。
将for循环改为检查isset($image['name'][$i]),您将不再收到错误。
for($i = 0; isset($image['name'][$i]); $i++)
{
//code
}
正如yes123所提到的,您有可能达到最大POST大小,应该检查php.ini。
检查post_max_size
的php.ini设置
还有
upload_max_filesize
memory_limit
max_execution_time
max_input_time
类似于Fosco的解决方案,但工作方式不同(使用sizeof和int到int比较,而不是isset)
这和他的都不一定更好,只是解决问题的方法不同。
for($i = 0, $size = sizeof($image['name']); $i < $size; $i++)
{
//code
}
不,它并不是每次迭代都运行sizeof()
。这是一个简单的方法来破坏性能。