为什么IE9不接受文件名长度超过230的文件?

时间:2015-01-10 03:21:24

标签: javascript internet-explorer internet-explorer-9

我想做什么?

我尝试使用输入类型="文件"选择文件后验证文件。标签。其中一项测试是确保文件名长度少于200个字符。

到目前为止我做了什么?

http://jsfiddle.net/joanferns00/ajeec780/4/ 当我尝试上传以下示例文件时,(文件名长度为230的文件) 234_aaaaa6JHmFop6Va6JHmFRsdK7fxn1HtVkpl5UREy7cn4yC4hlHuW87qDp2fEg3YQlZCETrkBbLqIgtAqlklyahRIH0hCzSUO234_op6Va6JHmFRsdK7fxn1HtVkpl5UREy7cn4yC4hlHuW87qDp2fEg3YQlZCETrkBbLqIgtAqlklyahRIH0hCzSUOI3YQlZCETrkBbLqIgtAqlklkBbLqIgtAqlkl.txt

function getLength() {
     //alert(.length);
     var fullPath = document.getElementById("myfile").value;
     if (fullPath) {
         var startIndex = (fullPath.indexOf('\\') >= 0 ? fullPath.lastIndexOf('\\') : fullPath.lastIndexOf('/'));
         var filename = fullPath.substring(startIndex);
         if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
             filename = filename.substring(1);
         }
         alert(filename.length);
     }
}

我期待什么?

我希望IE9像在Chrome和FireFox中一样提醒文本的长度

发生了什么事呢?

Firefox和chrome给我的值为230,但IE9甚至不允许我上传文件。

IE9是否有办法识别此文件并提醒Chrome和Firefox等文件名长度?

1 个答案:

答案 0 :(得分:3)

Windows将文件路径的长度限制为255个字符(文件路径+名称,包括扩展名和.),C:\增加了3个字符

来源:http://vlaurie.com/computers2/Articles/filenames.htm

我在尝试解压缩大型嵌套zip文件时一直遇到它。

IE9使情况变得更糟,因为它包含file输入元素的文件名的完整路径,包括开头" C:\"。

来源:http://support.softartisans.com/kbview_892.aspx

所以在Windows上,文件名的理论限制是258个字符,包括C:\。但是当IE9抓取该文件时,它会显示完整的路径,包括C:\,因此您可以上传到IE9的最大文件名是255个字符,包括C:\

例如,这将 NOT 上传

C:\ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890axxx.txt

但这将

C:\ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890a.txt

并且Windows甚至不允许您将文件命名为:

C:\ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890axxx00000.txt

因为它太长了。

很有可能,你的文件位于那个"神奇的范围内"大于255,因此IE不允许,但小于259,所以Windows仍然允许。 Firefox和Chrome并不关心,IE.的新版本也没有。IE9您无法做任何事情。