使用在IE9中工作的ajax发送文件/文件上载

我需要使用必须在IE9中支持的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编码的forms发送的,并且无法在java端解析。 任何有关如何解决这个问题的帮助或指针将不胜感激。 我需要适用于所有浏览器的东西。

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

遗憾的是,您不能使用Ajax(换句话说就是XMLHttpRequest )来发送文件,但您可以使用

来实现类似的行为使用“自然”方式发送用户选择的文件。 您可以使用javascript调用form.submit()然后从父文档中轮询以检查文件上载过程是否已完成。

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