我有以下脚本从输入类型的文件中获取文件数据:
var uploadfiles = $("#upFile").get(0);
var uploadedfiles = uploadfiles.files;
var fromdata = new FormData();
for (var i = 0; i < uploadedfiles.length; i++) {
fromdata.append(uploadedfiles[i].name, uploadedfiles[i]);
}
// ajax code omitted that uploads file
这在我测试过的所有浏览器中都很有效,除了IE 11.除此之外它不明白FormData()是什么?我现在已经在线阅读了很多不同的解决方法,但是没有一个可以工作,无论我什么都没做就能从输入中获取文件的细节。还有其他人有这个可以帮助吗?即使我尝试使用jQuery来获取对象,那么“文件”由于某种原因未定义。
编辑:在线阅读更多,似乎可能是因为IE在提交表单之前不提供对输入的访问,但是我使用ajax上传文件,所以我无法真正提交它。 / p>EDIT2:我还应该提一下,这个代码是在文件输入的更改事件上调用的,不确定它是否有任何相关性,但最好提一下
答案 0 :(得分:7)
在IE开发人员工具中检查docmode之后,由于某种原因它被恢复为9,在我的母版页上有一个旧版的X-UA-Compatible元标记我改为:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
FormData完全没有问题。
答案 1 :(得分:0)
在IE11上不完全支持FormData。
具体来说:FormData实例没有方法“ set”。 您需要改为使用append方法,如下所示:
const formData = new FormData();
formData.append('your_key_name', 'your_value_goes_here');
将meta http-equiv设置为IE = edge不会使'set'属性起作用,并且不需要。
参考: https://developer.mozilla.org/en-US/docs/Web/API/FormData/append