IE 11 在使用 HTML input=file 标签时锁定文件

IE 11 lock the file when using HTML input=file tag

  1. I choose the file using browse in the file input in IE11

  2. I deleted the file using shift+delete in the Explorer

  3. Then when I refresh the folder, the file that I deleted reappear again in Explorer.

有没有办法在客户端释放文件句柄javascript?我在 IE 8 中尝试过该测试,但没有出现该问题。

感谢任何帮助。

我可以在 IE 11 中释放文件处理程序,如下所示。

    document.getElementById("fileToUpload").value=""; // input file field
    document.getElementById("uploadForm").reset(); // form that containing input file field

我还可以通过设置 inputElement.value="" 来释放文件处理程序,但我想添加更多见解:

通过反复试验,我最终发现这只有在您不以任何方式引用 inputElement.files 时才有效。这甚至包括检查它的存在。为了防止 IE11 死机,我最终得到了这样的东西:

// html
<form id="formID">
  <input
    id="inputID"
    name="file"
    type="file"
  />
</form>

// javascript
var formData = new FormData(document.getElementById("formID"));
someBackendService.someUploadFileMethod(formData).then(function() {
  var inputElement = document.getElementById("inputID");
  inputElement.value = "";
}

只要文件数据还在FormData对象中,IE11就会释放锁。不幸的是,使用此设置,我无法找到支持上传多个文件或拖放的方法。

测试文件是否被锁定的一个简单方法是尝试重命名上传文件的来源目录。另一种方法是使用 Windows 附带的资源监视器:在 CPU 选项卡下的关联句柄子部分中,在 'Search Handles' 字段中键入您的文件名。