我最不喜欢的浏览器的是IE,但无奈很多项目的客户使用的是IE.

在使用Extjs做文件上传时,其他浏览器没有问题,但IE却一个劲提示保存文件,看服务端运行,它其实是运行成功了已经,但客户端的进度条却一个劲的在加载。

原因是:

IE浏览器对Content-Type = application/json,会出现下载保存

IE浏览器对Content-Type = text/html,返回信息按html处理

所以我们需要在代码中改变response的返回值来使IE上可以正常的运行:

JS代码:

 var importform = new Ext.form.FormPanel({
labelAlign : 'right',
fileUpload:true,
items : [ {
xtype : 'filefield',
id:'upFile',
name : 'file',
fieldLabel : '导入',
labelStyle : "text-align:right;",
labelWidth : 50,
msgTarget : 'side',
allowBlank : false,
anchor : '100%',
buttonText : '选择文件'
} ],
buttonAlign : 'center',
buttons : [ {
text : '上传',
handler : function() {
if (importform.form.isValid()) {
importform.getForm().submit({
url : 'forecast/importForecast',
waitMsg : '正在提交数据',
waitTitle : '提示',
success : function(response, options) {
var message = options.result.message;
if(message == "ok"){
Ext.Msg.alert('提示', "上传成功");
}else if(message == "ver"){
Ext.Msg.alert('提示', "请检查版本号是否正确");
}else if(message == "type"){
Ext.Msg.alert('提示', "你上传的文件类型错误");
}
importWin.hide();
deliveryStore.reload();
},
failure : function(response, options) {
Ext.Msg.alert('失败', '导入文件失败');
}
}); }
}
}, {
text : '重置',
handler : function() {
importform.getForm().reset();
}
}, {
text : '取消',
handler : function() {
importform.getForm().reset();
importWin.hide();
}
} ] });

controller代码:

/**
* 上传 即导入数据
* @param file
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value = "/importForecast")
public ResponseEntity<String> importForecast(@RequestParam MultipartFile file,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Map<String,String> map = new HashMap();
map.put("roleId", request.getSession().getAttribute("roleId").toString());
String result = "";
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setContentType(MediaType.TEXT_HTML);
try {
String fileName = file.getOriginalFilename();
long size = file.getSize(); if (!(fileName == null || fileName.equals("")) && size > 0) {
DmtTsUser user = (DmtTsUser) request.getSession().getAttribute(
"user");
result = forecastService.importForecast(file,
fileName, map); }
} catch (Exception e) {
e.printStackTrace();
}
String json = "{\"success\":true,\"message\":\""+result+"\"}";
return new ResponseEntity<String>(json, responseHeaders, HttpStatus.OK); }

try的部分是具体的实现文件上传的代码

版权声明:本文为博主原创文章,未经博主允许不得转载。

Extjs 上传文件 IE不兼容的问题[提示下载保存]的更多相关文章

  1. 【收集】JAVA多文件 上传文件接口代码 -兼容app

    原文:http://www.verydemo.com/demo_c143_i23854.html 我们在 multifile 中可以很容易的发现如何使用,这里就简单说说了,首先在页面上我们需要有这样几 ...

  2. Extjs 使用fileupload插件上传文件 带进度条显示

    一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...

  3. springmvc上传文件,抄别人的

    SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是 ...

  4. Requests库上传文件时UnicodeDecodeError: 'ascii' codec can't decode byte错误解析

    在使用Request上传文件的时候碰到如下错误提示: 2013-12-20 20:51:09,235 __main__ ERROR 'ascii' codec can't decode byte 0x ...

  5. Flex和Servlet结合上传文件

    Flex和Servlet结合上传文件 1.准备工作 (1)下载文件上传的组件,commons-fileupload-1.3.1.jar (2)下载文件输入输出jar,commons-io-2.4.ja ...

  6. 使用XWAF框架(2)——上传文件

    XWAF提供了上传文件的HttpFileUploader工具类,具备强大的多文件上传.文件类型过滤.文件大小限制.存储目录设置.文件名称更改等功能,简化了Web应用开发的编程工作. 它能同时解析表单参 ...

  7. Windows上传文件到linux 使用winscp

    Windows上传文件到linux 使用winscp, winscp下载目录 https://sourceforge.net/projects/winscp/postdownload?source=d ...

  8. hadoop上传文件报错

    19/06/06 16:09:26 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Bad ...

  9. Selenium+java - 借助autolt完成上传文件操作

    写在前面: 上传文件是每个自动化测试同学会遇到,而且可以说是面试必考的问题,标准控件我们一般用sendkeys()就能完成上传,但是我们的测试网站的上传控件一般为自己封装的,用传统的上传已经不好用了, ...

随机推荐

  1. RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据)

    ===================================================== RTMPdump(libRTMP) 源代码分析系列文章: RTMPdump 源代码分析 1: ...

  2. MinHash 原理

    最小哈希原理介绍 MinHash是基于Jaccard Index相似度(海量数据不可行)的算法,一种降维的方法A,B 两个集合:A = {s1, s3, s6, s8, s9}  B = {s3, s ...

  3. 关于Mac中PATH环境变量可能会被修改的几个地方

    一个是全局的profile文件,位置在/etc/profile中:另一个和用户无关的全局位置在/etc/paths.d目录中: apple@kissAir: paths.d$pwd /etc/path ...

  4. 使用kubeadm搭建Kubernetes(1.10.2)集群(国内环境)

    目录 目标 准备 主机 软件 步骤 (1/4)安装 kubeadm, kubelet and kubectl (2/4)初始化master节点 (3/4) 安装网络插件 (4/4)加入其他节点 (可选 ...

  5. Spring Cloud入门教程-Hystrix断路器实现容错和降级

    简介 Spring cloud提供了Hystrix容错库用以在服务不可用时,对配置了断路器的方法实行降级策略,临时调用备用方法.这篇文章将创建一个产品微服务,注册到eureka服务注册中心,然后我们使 ...

  6. Java——面向对象

    面向对象和面向过程的区别:面向对象,强调的是对象即实体:面向过程强调的是过程,即动作. 面向对象的特点:1,将复杂的问题简单化 2,更符合人们的思考习惯 3,让曾经的在过程中的执行者,变成了指挥者. ...

  7. 初识java——java的基础语法

    标识符:计算机语言中各种符号表示某个特定含义的符号. 表示符的命名规则:1,不能用关键字或者true,false,null; 2,标识符可以包含数字,字母,下划线,美元符号. 3,标识符的首字符必须是 ...

  8. access登录校验代码二

    ' 这一段是用来检查有没有输入用户名或密码的If IsNull(Trim(Me.username )) ThenDoCmd.BeepMsgBox ("请输入用户名称! ")Else ...

  9. MySQL 8 新特性之Invisible Indexes

    背景 索引是把双刃剑,在提升查询速度的同时会减慢DML的操作.毕竟,索引的维护需要一定的成本.所以,对于索引,要加上该加的,删除无用的.前者是加法,后者是减法.但在实际工作中,大家似乎更热衷于前者,而 ...

  10. 清理out的浏览器收藏夹发现的

    刚才清理了一下自己的浏览器书签,其实好几年不做收藏了,常用的直接放到书签栏里就行了. 发现不少之前的技术内容域名都被色情病毒经营者续费利用,相关技术内容都是VB.SQL.XMAPP这些过期的玩意,其中 ...