重新选择并上传相同的文件

13 html javascript file-upload

你不能重新选择和上传同一个文件,除了在Firefox中,它错误地允许你这样做:

<input type="file" id="fileChooser">
document.getElementById('fileChooser').onchange = function () {
    alert('Uploaded!');
};
Run Code Online (Sandbox Code Playgroud)

这是我解决问题的方法.我想知道是否有更简洁的方法来实现它.

<input type="file" id="fileChooser">
var fileChooser = document.getElementById('fileChooser');
fileChooser.onclick = function () {
    this.value = '';
};
fileChooser.onchange = function () {
    if (this.value) {
        alert('Uploaded!');
    }
};
Run Code Online (Sandbox Code Playgroud)

在JSFiddle上:http://jsfiddle.net/scMF6/2/

说明:

您无法连续两次重新选择同一文件foo.txt,例如,您在桌面上选择并上传,然后再次单击文件选择器,出现文件选择对话框并尝试再次选择同一文件 - 浏览器什么都不做,没有警报框出现.

San*_*eev 0

您的解决方案有一个问题,选择一个文件后,当您第二次单击它时,它会清除文件输入。现在,如果用户不选择新文件并取消浏览弹出窗口,那么他的旧选择就会消失。

这不是 FF 中文件输入的默认行为。

我想如果您有一些用于上传的句柄或回调,那么您应该清除其中的文件输入。