使用在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
有很多很酷的插件可以完成这项工作,例如,有我最喜欢的 插件 。
- 如何正确地转义在jQuery的.ajax函数中作为数据发送的html
- Mailchimp API V3 jQuery Ajax POST订阅者
- 如何通过uploadcare中的rest api删除文件
- 如何在asp.net Ajax更新pannel中使AsyncPostback之后的JQuery masked-input插件工作?
- Ajax CSV未定义的数组值
- PhantomJs脚本中的Ajax请求
- 为什么这个jQuery插件(Tooltipster)的Ajax内容仅在鼠标hover2次后显示?
- 如何使用jquery或ajax将图像(仅限图像URL)拖动到可放置区域以上传到服务器?
- 通过Ajax更改页面内容时维护浏览器历史记录