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

Why doesnt IE9 accept files with filename length over 230?

我想做什么?

我试图在使用 input type="file" 标记选择文件后对其进行验证。其中一项测试是确保文件名长度少于 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 那样识别这个文件并提示文件名长度?

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

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

我在尝试解压缩大的嵌套 zip 文件时总是遇到它。

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

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

因此 windows,文件名的理论限制是 258 个字符,包括 C:\。但是当 IE9 抓取那个文件时,它显示 complete 路径,包括 C:\,所以你可以上传到 IE9 的最大文件名是 255 个字符,包括 C:\

例如,这将上传

C:\1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890axxx.txt

但这会

C:\1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890a.txt

和 windows 甚至不允许您将文件命名为:

C:\1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890axxx00000.txt

因为太长了。

很有可能,您的文件位于 "magical range" 中的某处,它大于 255,因此 IE 不允许,但小于 259,因此仍然被 Windows 允许。 Firefox 和 Chrome 不在乎,新版本的 IE. 也不在乎 IE9

你无能为力