我可以在提交前查看要上传的文件是否被删除吗?

k0p*_*kus 5 html javascript forms file-upload

是否有浏览器兼容(在我的情况下为 >IE9、Firefox 和 Chrome)方法来捕获应该以 HTML 表单上传的文件在用户的 PC 上被重命名或删除,因此无法提交的边缘情况?

在这种情况下,我想在不可能提交后向用户显示错误。

Com*_*Guy 2

  • 如果您在IE中选择一个文件,然后在文件系统中删除它,Windows只会隐藏该文件,不会删除该文件,并且可以读取其内容。所以你不用担心IE。
  • input.files[0].size当您删除文件时,Chrome 会将文件大小 ( ) 调整为 0。遗憾的是,Firefox 并没有这样做。

一种解决方法,使用FileReader API(适用于 IE 10+、Chrome、Firefox):

<input type="file" id="fileInput" />
<input type="button" onClick="checkDeleted();" value="Check"/>

<script>
    function checkDeleted() {
        input = document.getElementById('fileInput');
        if (input.files.length > 0) {
            var file = input.files[0];
            var fr = new FileReader();
            fr.onload = function (e) {
                alert("File is readable");
            };
            fr.onerror = function (e) {
                if (e.target.error.name == "NotFoundError") {
                    alert("File deleted");
                }
            }
            fr.readAsText(file);
        } else {
            // no file choosen yet
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

在这里拉小提琴。