[英]Can't upload file in Internet Explorer using JQuery Form plugin
[英]JQuery File Upload plugin, Internet Explorer, and IFrame transport
我正在使用此插件 (僅是基本版本),並利用所有完善的功能來進行進度更新以與自己的UI配合使用(使用Knockout.js和Twitter Bootstrap)。 這是上下文的一些代碼片段:
// The file is sent to an ASP.NET MVC Web Api service to do all the business logic/DB stuff
uploadUrl = http://web.api.url/?apikey=key
$("#fileUpload" + "@index").fileupload({
headers: {
'Authorization': "@Html.AccessToken()",
'Accept': $.support.ajax ? "application/json" : "text/plain"
},
url: uploadUrl,
add: function (e, data) {
$.each(data.files, function (index, file) {
// add to KO viewmodel
});
data.submit();
},
fail: function (e, data) {
var error = data.errorThrown;
var text = data.textStatus;
},
done: function (e, data) {
// do some more viewmodel operations
},
progress: function (e, data) {
var progressPercentage = parseInt(data.loaded / data.total * 100, 10);
// update viewmodel
}
});
#fileUpload<Index>
元素是文件輸入
這在Chrome,FF和Safari中效果很好,但是(驚奇的是)在IE中卻沒有。 嘗試從文件輸入中選擇文件時,我得到一個非常奇怪的響應-瀏覽器打開一個下載對話框?
Do you want to open or save ?apikey=key (61 bytes) from webapiserver?
我嘗試在文件上傳事件偵聽器中使用帶有斷點的IE腳本調試器,甚至從未將其插入內部。 我在研究中看到過各種文章和文章,這些文章和文章表明application / json的接受類型會破壞IE,因此我的代碼中有條件嘗試處理該問題。
有什么我想念的嗎?
您的問題出在服務器端。
IE有點像dumbo,他接受服務器提供的第一種內容類型,因此您始終需要牢記FIRST嘗試使用text/plain
或text/html
進行回答。
但是,jQuery插件在FAQ中提到了這一點。
這是對我有用的C#修復程序的實現
var result = Json(statuses, JsonRequestBehavior.AllowGet);
if (HttpContext.Request.AcceptTypes.Contains("application/json"))
{
result.ContentType = "application/json";
}
else // Hack for IE9
{
result.ContentType = "text/plain";
}
return result;
這是因為返回的數據是application / json。 您需要服務器指定內容類型text / html,以防止IE將其解釋為下載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.