使用可在IE9中运行的Ajax发送文件/上传文件

我需要使用IE9中必须支持的ajax上传文件" title="ajax上传文件">ajax上传文件。我在这里使用FormData 。我的代码如下所示:

var files = new FormData();

JQuery.each($('#file')[0].files, function (i, file) {

files.append('file', file);

});

$.ajax({

type: "POST",

url: '/url',

cache: false,

contentType: false,

processData: false,

data: files,

...

});

这在Safari和Firefox中工作正常,但在IE9中失败,因为IE9不支持FormData。我尝试通过设置发送为文件:

data: $('#file')[0].files[0]

contentType: 'multipart/form-data'

由于数据以url编码形式发送,因此无法通过Java端进行解析,因此失败。任何有关如何解决此问题的帮助或指示,将不胜感激。我需要适用于所有浏览器的功能。

编辑:我不需要任何上传进度栏,因为文件通常很小。我不需要上传多个文件。我只需要上传一个文件。

回答:

不幸的是,您不能使用Ajax(XMLHttpRequest换句话说)来发送文件,但是您可以通过使用来实现类似的行为,其中<iframe/>带有的<formmethod="post"enctype="multipart/form-data"/>,其中包含的<inputtype="file"/>会使用“自然”方式发送用户选择的文件。您可以使用javascript调用,form.submit()然后<iframe/>从父文档中进行轮询,以检查文件上传过程是否完成。

jQuery有很多很棒的插件可以完成这项工作,例如,我最喜欢的一个。

以上是 使用可在IE9中运行的Ajax发送文件/上传文件 的全部内容, 来源链接: utcz.com/qa/417992.html

回到顶部