Rud*_*die 9 html5 file-upload html-input fileapi
我有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>';
};
Run Code Online (Sandbox Code Playgroud)
所有这一切都是重要的:
当我尝试这个时,我得到的最多:
1272个文件:176.053987 MB/31469个文件名字符
(在32位和64位Win7上,Chrome 26-52)
下一张图片(失败)将是:
在我的计算中,1 MB = 1000 ^ 2字节,而不是1024 ^ 2.(那可能是MiB,但也许我的操作系统/文件系统/浏览器不同意.)
我的问题是:为什么这么多文件?为什么这个最大?是依赖操作系统还是依赖于浏览器?我在哪里可以找到相关规格?这是JS的错吗?搜索"文件输入最大文件"等只会导致[max]属性,这是无关紧要的.
更多测试结果:
更新
kel*_*viN 19
为什么这么多文件?
文件数取决于所有文件名组合的字符数.
为什么这个最大?
在Windows API中,最大路径长度限制为256个字符,Unicode版本API为32,767个字符.
Chrome只是设置Unicode版本API的最大路径长度,因此您观察到的大约是32k字符.
请检查此修复程序:https://code.google.com/p/chromium/issues/detail?id = 44068
Firefox动态分配一个足够大的缓冲区来保存多个选定文件的大小,这可以处理更大的路径长度.
检查此修复程序:https://bugzilla.mozilla.org/show_bug.cgi?id = 660833
是依赖操作系统还是依赖于浏览器?
都.
我在哪里可以找到相关规格?
对于Windows API的使用和参考:
http://msdn.microsoft.com/en-us/library/aa365247.aspx(最大路径长度不限)
http://msdn.microsoft.com/en-us/library/ms646839( VS.85)的.aspx
这是JS的错吗?
没有.
归档时间: |
|
查看次数: |
8617 次 |
最近记录: |