zoukankan      html  css  js  c++  java
  • 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"
        };
    }

  • 相关阅读:
    bzoj千题计划174:bzoj1800: [Ahoi2009]fly 飞行棋
    bzoj千题计划173:bzoj1257: [CQOI2007]余数之和sum
    bzoj千题计划172:bzoj1192: [HNOI2006]鬼谷子的钱袋
    bzoj千题计划171:bzoj2456: mode
    bzoj千题计划170:bzoj1968: [Ahoi2005]COMMON 约数研究
    bzoj千题计划169:bzoj2463: [中山市选2009]谁能赢呢?
    bzoj千题计划168:bzoj3513: [MUTC2013]idiots
    oracle 11g RAC 的一些基本概念(四)
    fdisk用法(转载)
    Oracle 11g 新特性 -- Oracle Restart 说明(转载)
  • 原文地址:https://www.cnblogs.com/luminji/p/4677103.html
Copyright © 2011-2022 走看看