使用 jquery 上传文件适用于 Firefox,但不适用于 Internet Explorer

File upload using jquery works in Firefox but not in Internet Explorer

本文关键字:适用于 不适用 Internet Explorer Firefox 文件 使用 jquery      更新时间:2023-09-26

This JavaScript code

$(document).ready(function () {
            var uploader = new qq.FileUploader({
                element: document.getElementById('file-uploader'),
                action: 'api/GradeCheckIn',
                debug: true,
                onComplete: function (id, fileName, responseJSON) {
                    alert(responseJSON[0].ValidationErrors[0].ErrorMessage);
                }
            });
        });

就像火狐中的魅力一样工作。文件将发布到服务器,并将结果返回到客户端。返回的数据是 json 顺便说一句。

但是在Internet Explorer中,我收到消息是否要从本地主机打开或保存GradeCheckIn(2字节)。 就像我正在尝试下载文件一样。

我该如何解决这个问题?我想要资源管理器中与Firefox中相同的行为。

评论后编辑:

请求标头中的内容类型在 IE 和 Firefox 之间有所不同:

IE: multipart/form-data; boundary=---------------------------7dc2ec8205b2
Firefox: application/json; charset=utf-8

即使我在发出请求的代码中显式设置了内容类型,也是如此:

xhr.open("POST", queryString, true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
xhr.send(file);

我仍然无法解决这个问题。所有的想法都受到高度赞赏。请让我知道我是否应该提供更多信息。

大多数浏览器不会将application/json作为返回内容类型进行处理。如果您仍然想编写 json 并将其从 iframe 中读取出来,您可以考虑"破解"响应并发回您的内容,但使用 mime 类型的text/html