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