我需要使用IE9中必须支持的ajax上传文件。我正在使用提到的here的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/>和包含<form method="post" enctype="multipart/form-data"/><input type="file"/>来实现类似的行为,该form.submit()使用“自然”方式发送用户选择的文件。您可以使用javascript调用<iframe/>,然后从父文档中轮询该jQuery,以检查文件上传过程是否已完成。

ojit_code具有a lot of cool plugins来完成此工作,例如my favorite one

关于jquery - 使用可在IE9中使用的Ajax发送文件/上传文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13483408/

10-12 00:13
查看更多