在上傳圖片時,使用ajax提交,返回的數據格式為json。在測試時發現IE瀏覽器中,上傳圖片后,沒有顯示圖片,而是彈出一個提示:是否保存UploadImg.json文件;而在其他瀏覽器中正常。
在Chrome中調試后發現,圖片上傳成功后,瀏覽器給出了一個警告:Resource interpreted as Document but transferred with MIME type application/json。
原來后台代碼在返回json數據時,響應數據的ContentType默認為“application/json”,IE瀏覽器的新版本(IE10、IE11)會把該類型解釋為文件下載操作。
后台代碼:
public JsonResult UploadImgToLocal() { var FileMaxSize = 10240; //文件大小,單位為K var model = new ImgUploadResult(); try { HttpPostedFile myFile = HttpContext.Current.Request.Files[0]; if (myFile != null) { string fileExtension = myFile.FileName.Substring(myFile.FileName.LastIndexOf('.')); if (!CheckValidExt(fileExtension)) { return Json(new { UploadCode = 104, massege = "文件格式錯誤" }); } else { if (myFile.ContentLength > FileMaxSize * 1024) { return Json(new { UploadCode = 105, massege = "文件過大" }); } else { //上傳 //返回結果 return Json(new { UploadCode = 100, massege = "", sourceUrl = model.SourceImgUrl, bigUrl = model.BigImgUrl, thumbUrl = model.ThumbImgUrl }); } } } else { return Json(new { UploadCode = 102, massege = "請上傳文件" }); } } catch { return Json(new { UploadCode = 101, massege = "上傳失敗" }); } }
將代碼中的
return Json(new { UploadCode = 100, massege = "", sourceUrl = model.SourceImgUrl, bigUrl = model.BigImgUrl, thumbUrl = model.ThumbImgUrl });
改為:
JsonResult json = new JsonResult(); json.ContentType = "text/html"; json.Data = new { UploadCode = 100, massege = "", sourceUrl = model.SourceImgUrl, bigUrl = model.BigImgUrl, thumbUrl = model.ThumbImgUrl }; return json;
修改響應數據的ContentType類型后,返回的數據類型為json字符串,這樣就會兼容IE瀏覽器了。
