Chrome文件上传错误:第二次选择时文件名出错

时间:2015-03-17 03:30:03

标签: html google-chrome file-upload web

我正在开发一个带文件上传控件的简单网页:

<input type="file" name="file">

当我测试它时,我发现了这个奇怪的错误:当我第二次从磁盘中选择一个文件时,文件名就会出错。

例如,当我选择E:\tmp\123456789012345.jpg时,输入的值将为C:\fakepath\123456789012345.jpg,这是正确的。但是,如果我再次单击“浏览”按钮并选择文件E:\tmp\a.jpg,则输入的值将变为C:\fakepath\45.jpg,从而导致文件未找到错误。

在使用不同文件重复测试后,我发现只有当我选择文件名较长的文件时才会出现错误,然后选择较短的文件名。

此外,损坏的文件名是&#34;后缀&#34;更长的文件名(第一次选择)和broken_file_name.length + correct_file_name.length == long_file_name - 4

示例案例和相应的控制台输出:

// first, choose e:\tmp\123456789012345.jpg
>$('input[name="file"]').val()
<"C:\fakepath\123456789012345.jpg"
>$('input[name="file"]').val().length
<31

// then choose e:\tmp\a.jpg
>$('input[name="file"]').val()
<"C:\fakepath\45.jpg"  // should be "C:\fakepath\a.jpg"
>$('input[name="file"]').val().length
<18  // should be 17

// choose e:\tmp\123456789012345.jpg again, and then choose e:\tmp\ab.jpg
>$('input[name="file"]').val()
<"C:\fakepath\5.jpg"  // should be "C:\fakepath\ab.jpg"
>$('input[name="file"]').val().length
<17  // should be 18

// choose e:\tmp\123456789012345.jpg again, and then choose e:\tmp\abc.jpg
>$('input[name="file"]').val()
<"C:\fakepath\.jpg"  // should be "C:\fakepath\abc.jpg"
>$('input[name="file"]').val().length
<16  // should be 19

我尝试在Chromium问题列表中搜索此内容,但一无所获。

该错误发生在Chrome 39上,并在Chrome 41上消失。由于在磁盘上使用真实路径而不是&#34; C:\ fakepath&#34;。

,IE工作正常。

有什么想法吗?

0 个答案:

没有答案