我最不喜欢的浏览器的是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. EBS R12安装升级(FRESH)(一)

    from:http://nufeng.net/ebs-r12-fresh-installation-and-upgrades/ 文章目录[隐藏] 1 EBS安装前准备 1.1 硬件 1.2 虚拟机vm ...

  2. HBase BlockCache

    1. Cache 读写  调用逻辑:  hmaster.handleCreateTable->HRegion.createHRegion-> HRegion. initialize-> ...

  3. GEFGWT的HelloWorld

    发现一个好玩的东西,gef-gwt,使用它可以轻松的在web上建立gef程序,原文在这里http://gefgwt.org/getting-started/(文章虽然是英文,但是很容易懂,我是按部就班 ...

  4. C# 中的线程安全集合类

    C# 的集合类型中, 都有Synchronized静态方法, 和SyncRoot实例方法 对于ArrayList以及Hashtable 集合类来讲,当需要做到线程安全的时候,最好利用其自带的属性Syn ...

  5. MQ队列管理器搭建(一)

    多应用单MQ使用场景 如上图所示,MQ独立安装,或者与其中一个应用同处一机.Application1与Application2要进行通信,但因为跨系统,所以引入中间件来实现需求.   Applicat ...

  6. Configure the MySQL account associate to the domain user via MySQL Windows Authentication Plugin

    在此记录如何将之前一次做第三发软件在配置的过程. 将AD user通过代理映射到mysql 用户. 在Mysql官网有这样一段话: The server-side Windows authentica ...

  7. Bash的一些零星笔记

    1.变量带入操作符 在脚本中,使用变量前做检查是很重要的.通过代入操作符,可以实现这方面的功能.比如当变量未赋值时为变量赋默认值,以及更多内容: ${parameter:-默认为空}:当paramet ...

  8. php namespace与use

    实验代码 ~/aa.php ~/bb.php 1.命名空间与文件加载的关系 本人在命名空间与文件加载上一直有一个误区,用了命名空间文件不用加载了? 实验1:去掉requre语句 可以看到就算使用命名空 ...

  9. 发布开源库到JCenter所遇到的一些问题记录

    这周末自己瞎折磨了下,如何发布开源库到 JCenter,然后这过程中碰到了一些问题,在此记录分享一下 本篇是基于上一篇:教你一步步发布一个开源库到 JCenter 介绍的流程.步骤中所遇到的问题,所以 ...

  10. Tomcat中常见线程说明

    http://blog.csdn.NET/jeff_fangji/article/details/41786205 本文讲述了Tomcat的常见线程的功能.名称.线程池和配置等信息,其中源码来自于To ...