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

Javascript 为什么IE9不接受文件名长度超过230的文件?,javascript,internet-explorer,internet-explorer-9,Javascript,Internet Explorer,Internet Explorer 9,我想做什么 我尝试在使用input type=“file”标记选择文件后验证该文件。测试之一是确保文件名长度小于200个字符 到目前为止我做了什么 当我尝试上载以下示例文件时,(文件名长度为230的文件) 234úaaaaa6JHMFOP6VA6JHMFRSDK7FXN1HTVKPL5URE7CN4YC4HLHUW87QDP2FEG3YQLZETRKBBLQIGTAQLKLYAHRH0HCZSUO234úOP6VA6JHMFRSDK7FXN1HTVKPL5URE7CN4YC4HLHUW87QD

我想做什么

我尝试在使用input type=“file”标记选择文件后验证该文件。测试之一是确保文件名长度小于200个字符

到目前为止我做了什么

当我尝试上载以下示例文件时,(文件名长度为230的文件) 234úaaaaa6JHMFOP6VA6JHMFRSDK7FXN1HTVKPL5URE7CN4YC4HLHUW87QDP2FEG3YQLZETRKBBLQIGTAQLKLYAHRH0HCZSUO234úOP6VA6JHMFRSDK7FXN1HTVKPL5URE7CN4YC4HLHUW87QDP2FEG3YQLZCETRKBLQIGTAQLKLYH0HCZSUO3YQLZCETRKBBLQIGTAQLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLK

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个字符(文件路径+名称,包括扩展名,
),
C:\
3个额外字符

资料来源:

我在尝试解压缩大型嵌套zip文件时总是遇到这种情况

IE9使情况更糟,因为它包含了
文件
输入元素的文件名的完整路径,包括开头的“C:\”

资料来源:

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

例如,这将而不是上传

C:\123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012.txt

但这会

C:\1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567909090A.txt

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

C:\123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345670123456789012345678901234567890123456789012.txt

因为它太长了


很可能,您的文件在大于255的“神奇范围”内,所以IE不允许,但小于259,所以Windows仍然允许。Firefox和Chrome不在乎,新版的
IE也不在乎。
对于
IE9

你无能为力,谢谢。javascript代码可以在IE9中捕获这种情况吗?换句话说,我想让用户知道他们的文件名/文件路径是否太长,而不是在选择这样的文件时显示一个空白的输入字段。IE9只是默默地失败,所以通常不会。需要调查的是尝试捕获用户选择文件的事件,然后查看它是否更改,但这很棘手,因为我认为您只能捕获点击偶数,而不能捕获实际的文件选择事件