首页 文章

在HTML5 [多个]文件输入中选择的最大文件数是多少?

提问于
浏览
9

我有64000个小图像,我想上传到我的网站(使用现有的验证,所以没有FTP等) . 我为此创建了一个HTML5 [multiple] type = file输入,用于一百或几百个图像 . 数百不是问题 . 图像被批处理并发送到服务器 .

但是当我选择~16000个图像的文件夹时,文件输入的FileList为空... onchange事件触发,但文件列表为空 . 浏览器(或文件系统或操作系统?)似乎在选择这么多文件时遇到问题 .

我创建了一个非常小的工具来帮助确定最大值:http://jsfiddle.net/rudiedirkx/Ehhk5/1/show/

$inp.onchange = function(e) {
    var l = 0, b = 0;
    for (var i=0, F=this.files, L=F.length; i<L; i++) {
        l += F[i].name.length;
        b += F[i].size;
    }
    $nf.innerHTML += this.files.length + ' files: ' + (b/1000/1000) + ' MB / ' + l + ' chars of filename<br>';
};

所有这一切都是重要的:

  • 文件数量

  • 组合所有文件名的字符数

  • 文件总大小的MB数

当我尝试这个时,我得到的最多:

1272个文件:176.053987 MB / 31469个文件名字符

(在32位和64位Win7上,Chrome 26-52)

下一张图片(失败)将是:

  • 1273张图片,这不是一个明显的截止

  • 介于176和177 MB之间的文件大小,也不是一个明显的截止

  • 少于32000个文件名字符,也不是一个明显的截止,虽然它可能看起来像32k ......

在我的计算中,1 MB = 1000 ^ 2字节,而不是1024 ^ 2 . (那可能是MiB,但也许我的操作系统/文件系统/浏览器不同意 . )

我的问题是:为什么这么多文件?为什么这个最大?是依赖操作系统还是依赖于浏览器?我在哪里可以找到相关规格?这是JS的错吗?搜索“文件输入最大文件”等只会导致[max]属性,这是无关紧要的 .

更多测试结果:

  • 在Firefox中,max似乎要高得多 . 至少"2343 files: 310.66553999999996 MB / 60748 chars of filename"(这就是我在这里的所有文件)

  • 在Firefox中也是:"16686 files: 55.144415 MB / 146224 chars of filename"(小得多,但文件更多)

Update

  • Chrome 52金丝雀Windows仍然是32k的文件名

  • Firefox(44)Windows仍然无限制

1 回答

相关问题