1

我在上传图片时遇到了 Internet Explorer 的问题。

以下是代码 jQuery/AJAX 帖子。此代码在除 IE 之外的其他浏览器(Mozilla/Chrome)中运行良好。

<input id="Upload" type="button" value="Upload" />
<input type="file" name="file" id="AdFile" style="display: none" />

$('#Upload').click(function () {
     $('input[id=AdFile]').click();
});

$('#AdFile').change(function () {
     uploadAd($("#AdFile")[0].files[0]);
});

function uploadAd(file) {
var formData = new FormData();
    formData.append('File', file);
    formData.append('ParentId', parentId);
    formData.append('FileType', fileType);
    $.ajax({
       type: "POST",
       url: "@Url.Action("UploadAd", "Ad")",
       data: formData,
       contentType: false,
       processData: false,
       success: function (data) {
         if (data.Success) {
           $('#AdList').append("<option value='" + data.Ad.AdId + "'>" + data.Ad.FileName + "</option>");
         }
       }
    }).fail(function (data) {
        //FAIL?
    }).done(function () {
    });
    return false;
 }

我猜“FormData”不适用于 IE。相同的替代方案是什么?

4

4 回答 4

0

看到这个...

为 IE 更改此项:

$('#AdFile').change(function () {
     uploadAd($("#AdFile")[0].files[0]);
})

为了:

$('#AdFile').change(function () {
     uploadAd($(this)[0]);
});

而这条线

url: "@Url.Action("UploadAd", "Ad")",

为了:

url: "@Url.Action(" + UploadAd + ", " + Ad + ")",

并看到这个jsFiddle 示例

问候。

于 2013-01-23T13:04:08.590 回答
0

试试下面的代码:

if(typeof FormData == "undefined"){
var formData = [];
formData.push('File', file);
formData.push('ParentId', parentId);
formData.push('FileType', fileType);
}
else{
var formData = new FormData();
formData.append('File', file);
formData.append('ParentId', parentId);
formData.append('FileType', fileType);
}

希望这对您有所帮助。

于 2014-03-06T05:22:16.957 回答
0

删除逗号 processData: false,检查一下,它会工作。

于 2013-01-23T12:26:42.673 回答
0

例如,当您尝试上传文件时,您需要在 append 方法中使用第三个参数。

formData.append(name, value, filename);

IE 将动态更改 Blob 中的文件名。要直接控制发送的文件名,开发人员应将文件名作为第三个参数值发送,即 formData.append(name, value, filename)。

检查https://developer.mozilla.org/en-US/docs/Web/API/FormData/append

此外,在一些旧版本的 ie 中(我相信 < ie9),不允许从隐藏输入上传文件。

于 2018-06-07T08:42:42.177 回答