【问题标题】:HTML Input: uploading multiple files maxes at 20HTML 输入:最多上传 20 个文件
【发布时间】:2011-09-08 10:32:38
【问题描述】:

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

【问题讨论】:

  • ...请告诉我您不依赖 register_globals。你不是,对吧? ;_;

标签: php mysql input upload


【解决方案1】:

php.ini 设置中的max_file_uploads 是原因。把它改成你想要的就行了。

【讨论】:

  • 迟到的答案审查:感谢您的意见!
【解决方案2】:

我对“不会上传超过 20 个”部分感到有点困惑......你这是基于什么?无论哪种方式,您都会遇到错误。

改为检查 isset($image['name'][$i]) 的 for 循环,您将不再收到错误。

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

正如 yes123 所提到的,您有可能达到最大 POST 大小,应该检查 php.ini。

【讨论】:

  • 当我告诉输入选择 60 个文件时,它仍然在索引 20 处退出。
  • 在 $image 上运行 var_dump 并查看变量本身的内容。
  • @DavidR 我会推荐使用另一种上传方法,就像在这里找到的那​​样:google.com/…
  • 嗯,var_dump 显示它也在索引 19 处退出。那么也许它与HTML有关?但是当我选择大量文件时,它会显示“60 个文件”或“50 个文件”,或者我选择了多少。
  • 我从未使用过闪存,但我觉得这可能是最好的答案。我对 php 并不熟悉,因为我似乎需要这样做。
【解决方案3】:

检查 post_max_size 的 php.ini 设置

还有

upload_max_filesize  
memory_limit 
max_execution_time 
max_input_time

【讨论】:

  • 每个人都使用了ini_set(),仍然在 20 点退出。
  • 你不能使用 ini_set。把它们放在 php.ini 中
【解决方案4】:

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

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

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

不,它不会在每次迭代时运行sizeof()。这是一种破坏性能的简单方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 2014-09-26
    • 2023-02-12
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多