在某些版本浏览器下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"
    };
}

ajaxFileUpload上传文件后提示下载的问题的更多相关文章

  1. IE下AjaxForm上传文件直接提示下载的兼容性Bug

    使用AjaxForm上传文件时候,在IE下直接提示下载保存: 我的示例代码: return this.Json( new { prop1 = 5, prop2 = 10 }); 这种问题只出现在IE下 ...

  2. 在使用 AjaxFileUpload 上传文件时,在项目发布到 iis 后,图片不能预览

    在使用 AjaxFileUpload  上传文件时,图片已经上传成功了,在站点没有发布时,可以预览,可是在项目发布到 iis 后,图片就不能预览,在网上找了很多的方案也没解决,最后的解决方案如下: 1 ...

  3. ASP.NET页面上传文件时提示文件大小超过请求解决方法

    在webconfig中节点 <system.web> </system.web> 下加入以下代码:maxRequestLength为限制上传文件大小,executionTime ...

  4. ifrem上传文件后显示

    ifrem上传文件后显示 1.上传文件按钮    <a class="btn btn-primary pull-right" id="data-upload&quo ...

  5. IE中使用ajaxSubmit上传文件弹出下载提示框

    使用jQuery的ajaxSubmit 上传文件时,在IE中会弹出下载提示框: 解决方法:让action返回String类型,而不是ActionView,

  6. springmvc+ajaxFileUpload上传文件(前后台彻底分离的情况下)

    首先是导入jar包: web.xml: <servlet> <servlet-name>mvc-dispatcher</servlet-name> <serv ...

  7. ajaxFileUpload上传文件没反应

    调用jquery的ajaxFileUpload异步上传文件,IE浏览器不进入success问题 原因:json转换异常,ie浏览器处理后的返回json没有<pre>标签,直接是完整的jso ...

  8. ajaxFileUpload上传文件简单示例

    写在前面: 上传文件的方式有很多,最近在做项目的时候,一开始也试用了利用jquery的插件ajaxFileUpload来上传大文件,下面,用一个上传文件的简单例子,记录下,学习的过程~~~ 还是老样子 ...

  9. webuploader 上传文件 生成链接下载文件

    最近 在asp.net MVC 项目 需要实现一个Excel和 图片上传功能.之前有使用过SWFUpload 做过上传图片功能,在本次实现过程中,有人推荐WebUploader 上传组件,因此采用we ...

随机推荐

  1. (转)SpyGlass工具介绍

    Spyglass工具有五大模块: lint,  CDC(多时钟域检查), LP(低功耗),Constraint(约束),DFT(可测试性). 一,在RTL层面上预估芯片性能,从而引导设计人员开发出更加 ...

  2. 【C#】 一些不常用,很容易混淆的知识点

    [C#] 一些不常用但很容易混淆的知识点 1. 访问修饰符 internal ,译为内部的, 在同一个程序集中可访问,它的内部是相对与程序集的,可不能想当然了 2. String.Compare 这个 ...

  3. WordPress建站指南

    WordPress建站指南(1)   写在前面: 3月份用10天零碎时间火速完成了建站,后台95%的工作都交给了WP(WordPress).如果想偷懒的话,WP是一个绝好的选择,估计有个小半天就建完收 ...

  4. ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆AnalyzerTool分词工具.非常实用!

    AnalyzerTool分词工具.非常实用! 可以查看某串字符最终被分割成什么样子,这样便于查询时深刻明白为什么有的查不到有的却能查到. package com.isoftstone.www.tool ...

  5. 装完RHEL7后,重新开机启动后显示:Initial setup of CentOS Linux 7 (core) 提示license报错

    装完RHEL7后,重新开机启动后显示: 1) [x] Creat user 2) [!] License information (no user will be created) (license ...

  6. 深入理解JVM内存模型

    1.程序计数器在虚拟机的概念模型里字节码解释器工作时就是通过改变 这个计数器的值来选取下一条需要执行的字节码指令,分支.循环.跳转.异常处理. Java 虚拟机的多线程是通过线程轮流切换并分配处理器执 ...

  7. as 和 is 区别

    as 将对象转换某类型,如果失败则返回null.is用来判断对象是否为某个类型,在判断过程中会对对象进行两次转换,而as只有一次转换,故as效率高.

  8. 深入理解C语言的函数调用过程

    本文主要从进程栈空间的层面复习一下C语言中函数调用的具体过程,以加深对一些基础知识的理解.     先看一个最简单的程序: 点击(此处)折叠或打开 /*test.c*/ #include stdio. ...

  9. 设置阿里云maven中央仓库的settings.xml

    本来想找一个可用的设置文件,结果乱七八糟的,干脆自己做了一个,同时还放上了Spring的SNAPSHOT和MILESTONE/RELEASE仓库,希望能帮到一些人. <?xml version= ...

  10. Browser增加下载路径选择功能

    SWE Browser中有xml/download_settings_preferences.xml, 但在代码中却没有调用,导致“设置”中没有”选择下载路径“功能. 在com.android.bro ...