ajaxFileUpload上传文件后提示下载的问题
在某些版本瀏覽器下ajaxFileUpload上傳文件會提示下載,
1:為什么?
可以觀察到,即便返回 JsonResult 在返回的頭中也沒有任何消息體,直接理解為文本了。
2:解決方案
前端:
function uploadImg(fimgi) {
??? if (("#fimg"?+?fimgi).val().length?>?0)?{?????????//alert(("#fimg"?+?fimgi).val().length?>?0)?{?????????//alert(("#fimg" + fimgi).val().length);
??? }
??? else {
??????? alert("請選擇圖片");
??????? return;
??? }
????.ajaxFileUpload({?????????type:?'post',?????????url:?"/product/UploadProductImage?fimgi="?+?fimgi,?????????secureuri:?false,?????????fileElementId:?'fimg'?+?fimgi,?????????dataType:?"json",?????????success:?function?(data)?{?????????????alert("上傳成功!");?????????????//alert(data.O);.ajaxFileUpload({?????????type:?'post',?????????url:?"/product/UploadProductImage?fimgi="?+?fimgi,?????????secureuri:?false,?????????fileElementId:?'fimg'?+?fimgi,?????????dataType:?"json",?????????success:?function?(data)?{?????????????alert("上傳成功!");?????????????//alert(data.O);("#Img" + fimgi).val(data.O);
??????? },
??????? error: function (XMLHttpRequest, textStatus, e) {
??????????? alert(textStatus);
??????????? alert(e);
??????? }
??? });
}
后臺改為范圍ContentResult,且,ContentType = "text/html"。
public ContentResult UploadProductImage(int fimgi)
{
??? HttpPostedFileBase head = this.Request.Files["fimg"+fimgi];
??? if (head == null)
??? {
??????? return new ContentResult
??????? {
??????????? Content = new JavaScriptSerializer { MaxJsonLength = int.MaxValue }.Serialize(new R() { F = 1, M = "對不起,無上傳內容!" }),
??????????? ContentType = "text/html"
??????? };
??? }
??? var supportedTypes = new[] { "jpg", "jpeg", "png", "gif", "bmp" };
??? var fileExt = System.IO.Path.GetExtension(head.FileName).Substring(1);
??? if (!supportedTypes.Contains(fileExt))
??? {
??????? return new ContentResult
??????? {
??????????? Content = new JavaScriptSerializer { MaxJsonLength = int.MaxValue }.Serialize(new R() { F = 1, M = "對不起,只能上傳 jpg, jpeg, png, gif, bmp!" }),
??????????? ContentType = "text/html"
??????? };
??? }
??? if (head.ContentLength > 1024 * 1024)
??? {
??????? return new ContentResult
??????? {
??????????? Content = new JavaScriptSerializer { MaxJsonLength = int.MaxValue }.Serialize(new R() { F = 1, M = "對不起,大小超出限制1M!" }),
??????????? ContentType = "text/html"
??????? };
??? }
??? var r = new Random();
??? var filename = Guid.NewGuid().ToString("N") + "." + fileExt;
??? string path = this.Server.MapPath("~/upload/product");
??? if (!Directory.Exists(path))
??? {
??????? Directory.CreateDirectory(path);
??? }
??? var filepath = Path.Combine(path, filename);
??? head.SaveAs(filepath);
??? string webPath = "/upload/product/" + filename;
??? return new ContentResult
??? {
??????? Content = new JavaScriptSerializer { MaxJsonLength = int.MaxValue }.Serialize(new R()
??????? {
??????????? F = 0,
??????????? M = "上傳成功,保存為:" + webPath + "!",
??????????? O = webPath
??????? }),
??????? ContentType = "text/html"
??? };
}
本文轉自最課程陸敏技博客園博客,原文鏈接:http://www.cnblogs.com/luminji/p/4677103.html,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的ajaxFileUpload上传文件后提示下载的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 256GB豪华套餐!芝奇发布八通道DDR
- 下一篇: ChatGPT大热 老黄抓住风口 NVI