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


HTML Input: uploading multiple files maxes at 20

我有一个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数据库中。

php.ini设置中的

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()。这是一个简单的方法来破坏性能。