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

时间:2016-01-28 07:20:28

标签: javascript internet-explorer-11

  
      
  1. 我在IE11

  2. 的文件输入中使用浏览选择文件   
  3. 我在资源管理器中使用shift + delete删除了文件

  4.   
  5. 然后当我刷新文件夹时,我删除的文件再次出现在资源管理器中。

  6.   

无论如何,我可以在客户端javascript发布文件句柄吗?我在IE 8中尝试过该测试,但该问题并未发生。

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我还可以通过设置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选项卡下的“关联的句柄”子部分中,在“搜索句柄”字段中键入文件名。

Reference image of Windows' Resource Monitor tool