Javascript 为什么IE9不接受文件名长度超过230的文件?
我想做什么 我尝试在使用input type=“file”标记选择文件后验证该文件。测试之一是确保文件名长度小于200个字符 到目前为止我做了什么 当我尝试上载以下示例文件时,(文件名长度为230的文件) 234úaaaaa6JHMFOP6VA6JHMFRSDK7FXN1HTVKPL5URE7CN4YC4HLHUW87QDP2FEG3YQLZETRKBBLQIGTAQLKLYAHRH0HCZSUO234úOP6VA6JHMFRSDK7FXN1HTVKPL5URE7CN4YC4HLHUW87QDP2FEG3YQLZCETRKBLQIGTAQLKLYH0HCZSUO3YQLZCETRKBBLQIGTAQLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKLKJavascript 为什么IE9不接受文件名长度超过230的文件?,javascript,internet-explorer,internet-explorer-9,Javascript,Internet Explorer,Internet Explorer 9,我想做什么 我尝试在使用input type=“file”标记选择文件后验证该文件。测试之一是确保文件名长度小于200个字符 到目前为止我做了什么 当我尝试上载以下示例文件时,(文件名长度为230的文件) 234úaaaaa6JHMFOP6VA6JHMFRSDK7FXN1HTVKPL5URE7CN4YC4HLHUW87QDP2FEG3YQLZETRKBBLQIGTAQLKLYAHRH0HCZSUO234úOP6VA6JHMFRSDK7FXN1HTVKPL5URE7CN4YC4HLHUW87QD
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只是默默地失败,所以通常不会。需要调查的是尝试捕获用户选择文件的事件,然后查看它是否更改,但这很棘手,因为我认为您只能捕获点击偶数,而不能捕获实际的文件选择事件