• ajaxFileUpload上传文件后提示下载的问题


    在某些版本浏览器下ajaxFileUpload上传文件会提示下载,

    1:为什么?

    可以观察到,即便返回 JsonResult 在返回的头中也没有任何消息体,直接理解为文本了。

    2:解决方案

    前端:

    function uploadImg(fimgi) {
        if ($("#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);
                $("#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"
        };
    }

  • 相关阅读:
    CCF NOI1121 逆波兰表达式
    Vijos P1217 乒乓球【模拟+输入输出】
    Vijos P1304 回文数【回文+进制】
    NUC1041 数字三角形【DP】
    CCF NOI1070 汉诺塔游戏
    CCF NOI1069 分解因数
    CCF NOI1149 N皇后问题
    CCF NOI1153 素数环
    CCF NOI1170 质因数分解
    POJ NOI MATH-7832 最接近的分数
  • 原文地址:https://www.cnblogs.com/luminji/p/4677103.html
Copyright © 2020-2023  润新知