Javascript 选择2000个文件时,HTML5文件API给出的长度为0

Javascript 选择2000个文件时,HTML5文件API给出的长度为0,javascript,jquery,html,file-upload,Javascript,Jquery,Html,File Upload,我有以下资料: HTML 你可以在中看到它的作用。如果选择1700个文件,代码工作正常,evt.target.files.length返回正确数量的文件。但是,如果选择目录2279中的所有文件(总大小为210MB),则evt.target.files.length返回0 文件API是否存在某种不明确的文件限制 在我的web.config中,我有:maxRequestLength=700000,它应该处理给定大小的文件。然而,对我来说,这似乎是一个客户端问题,而不是服务器端问题,因为没有向服务器提

我有以下资料:

HTML

你可以在中看到它的作用。如果选择1700个文件,代码工作正常,evt.target.files.length返回正确数量的文件。但是,如果选择目录2279中的所有文件(总大小为210MB),则evt.target.files.length返回0

文件API是否存在某种不明确的文件限制

在我的web.config中,我有:maxRequestLength=700000,它应该处理给定大小的文件。然而,对我来说,这似乎是一个客户端问题,而不是服务器端问题,因为没有向服务器提交任何内容


有什么想法吗?

这不是HTML5文件API的限制,而是浏览器实现或操作系统的限制

例如,在WindowsVista上测试Firefox时,我可以选择的文件数量似乎实际上没有限制,我测试的文件数量高达10000个。在Chrome上,它似乎返回了3758个选定文件

不同之处在于Firefox使用了新的IFileOpenDialog接口,该接口将所选文件作为枚举返回,但Chrome似乎使用了旧的GetOpenFileName API,该API依赖于固定大小的缓冲区。如果缓冲区不够大,它应该返回一个错误,但在Vista上,它只返回被截断和轻微损坏的数据

有趣的是,从Chrome返回的文件数量和我测试的文件名的知识来看,我可以很好地猜测使用的缓冲区大小可能是32768

我猜您使用的是Windows 7或8,并且GetOpenFileName API已经修复到,如果超出缓冲区大小,它现在将返回一个错误。因此,当您选择太多文件时,浏览器不会尝试处理截断的数据,只返回0

确切的限制将基于文件名的长度和包含这些文件的目录的路径


其他操作系统显然没有这些限制,但根据其文件选择API的设计,可能会有自己的问题。

所有浏览器?当这种情况发生时,你在控制台中看到了什么吗?我只在Chrome和IE10中尝试过,我得到了相同的结果。不,console中没有显示任何内容。顺便说一句,我在猜测2000年的记录极限,结果是,接近1820年,事情变得一团糟。谢谢James。这很有道理。谢谢你为我确认这一点!
<input id="files" name="files" type="file" multiple="multiple" />
<button id='subButton' type='submit'>Upload (0) files</button>
$("#files").change(function(evt) {
    debugger;
    $("#subButton").text("Upload (" + evt.target.files.length + ") files");
});