在某些版本浏览器下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上传文件后提示下载的问题相关推荐

  1. jquery-form中ajaxSubmit提交文件,以及解决ie9下上传文件后自动下载问题

    需要引用jquery-form.js 下载地址http://plugins.jquery.com/form/ 1.之前的项目一直使用formData的方式上传文件到后台处理,但新项目要求支持ie9,i ...

  2. 解决ajaxFileUpload上传文件在ie浏览器中出现下载框的问题

    在开发时用到ajaxFileUpload上传文件,在ie浏览器中会出现下载框的问题,结合网上查到的资料最后解决,在此记录一下,以免以后遇到不知道怎么解决, 前端: 后台: ps:返回值有list改为j ...

  3. Spring MVC上传文件后重命名读取不显示,报错已解决(The origin server did not find a current representation for the targe)

    上传文件后,重命名保存在本地,再读取时报错:The origin server did not find a current representation for the target resourc ...

  4. 文件服务器异常 选择签名,OSS上传文件后,服务器签名验证失败

    关于 OSS上传文件后,服务器签名验证失败的搜索结果 回答 指定该Header后,在响应头中也会返回该Header,OSS会对上传的Object进行加密编码存储,当这个Object被下载时,响应头中会 ...

  5. thinkPHP 阿里云OSS 上传文件、直接下载

    阿里云OSS 上传文件.直接下载 1. 安装OSS SDK composer require aliyuncs/oss-sdk-php 2. thinkPHP接口 public function up ...

  6. vue+elementui 同时有上传文件和批量上传文件功能,上传文件或批量上传文件后必须刷新才能再次上传文件

    报错描述: 使用element-ui的上传文件组件写一个批量上传和上传文件,但是发现每次上传文件后或者批量上传文件后,不能再次上传文件或者批量上传文件.只有进入页面第一次点击上传文件或者批量上传文件才 ...

  7. 上传文件正常,下载文件查看失败,下载文件大小为0kb

    上传文件正常,下载文件查看失败,下载文件大小为0kb 首先查看前台传进来的文件名与目录下的文件名是否一致,其次查看下载文件路径是否正确. 我的多出来个日期文件夹 is = new FileInputS ...

  8. ajaxfileupload上传文件问题

    一.ajaxfileupload在新版的jQuery中会报jQuery.handleError is not a function 解决办法: 在Ajaxfileupload.js中追加方法: han ...

  9. jQuery插件之ajaxFileUpload上传文件或图片

    我用的是这个:https://github.com/carlcarl/AjaxFileUpload 下载地址在这里:http://files.cnblogs.com/files/kissdodog/a ...

最新文章

  1. 一个简单视频网站开发小记
  2. Go 语言范围(Range)
  3. Hexo瞎折腾系列(5) - 使用hexo-neat插件压缩页面静态资源
  4. java additem 错,Java错误:IllegalArgumentException:向容器添加窗口
  5. Wordpress:将图片、post等的URL转换为相对路径
  6. [信息收集] HCOMP 2010概况及收录论文
  7. 工作239:内容过长省略号失败 直接改的样式表
  8. Kubernetes 持久化存储 Cephfs
  9. Objective-C中变量采用@property的各个属性值的含义
  10. 俱乐部通知[即日起启用微软Live Meeting]
  11. 有序表的最小和(element)
  12. EasyCHM - 电子书制作软件
  13. linux安装vbox 教程,Linux安装VirtualBox虚拟机
  14. 计算机专业兴趣小组 名字,计算机人兴趣小组口号
  15. 胖大海和罗汉果可以同泡吗
  16. jar完整性测试的Java代码
  17. 三跨考研浙江大学计算机,“三跨”考研的焦虑 你能承受多少
  18. 摸鱼三天,我写了一个通用的组建树TreeUtil工具
  19. vim的文件比较功能
  20. 简述计算机构位移的目的,简述应变片的选用原则

热门文章

  1. CentOS6.x 下 /etc/security/limits.conf 被改错的故障经历
  2. VS2010/MFC编程入门之二十(常用控件:静态文本框)
  3. CPU,MPU,MCU,SOC,SOPC联系与差别
  4. 【shell】shell编程(四)-循环语句
  5. 验证启用了不安全的HTTP方法
  6. 第二阶段个人工作总结04
  7. MySQL查询不到中文的问题
  8. (一)、http原理
  9. 大数问题(高精度运算)
  10. 运用扩展管理器完成flash图层的合并