我最不喜欢的浏览器的是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. Android开发技巧——自定义控件之增加状态

    Android开发技巧--自定义控件之增加状态 题外话 这篇本该是上周四或上周五写的,无奈太久没写博客,前几段把我的兴头都用完了,就一拖再拖,直到今天.不想把这篇拖到下个月,所以还是先硬着头皮写了. ...

  2. Leetcode_263_Ugly Number

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/49431329 Write a program to che ...

  3. ssh keygen命令实现免密码通信(git库获取操作权限:开发人员添加到git库中,获取操作权限)

    先看两个机器实现免密码登陆通讯: 假设 A 为客户机器,B为目标机: 要达到的目的: A机器ssh登录B机器无需输入密码: 加密方式选 rsa|dsa均可以,默认dsa 做法: 1.登录A机器 2.s ...

  4. javascript学习(三)——常用方法(2)

    一.兼容性较高的浏览器页面关闭 //关闭网页,不支持火狐(火狐返回上次浏览页面)   //FireFox非window.open()等弹出页面,需要在地址栏中输入about:config, 然后将do ...

  5. Windows上模拟Linux环境的软件Cygwin

    Windows上模拟Linux环境的软件Cygwin 2010-10-11 15:19      我要评论(0) 字号:T|T Cygwin是一个用于在Windows上 模拟Linux环境的软件.它可 ...

  6. Failed building wheel for scandir 解决方案

    unbuntu 16.04 运行 pip install jupyter --upgrade 的时候出现了下面的错误 Failed building wheel for scandir Running ...

  7. 【读书笔记】C++Primer---第一章

    1.标准库的头文件用尖括号<>括起来,非标准库的头文件用双引号“”括起来:

  8. Python import this : The Zen of Python

    >>> import thisThe Zen of Python, by Tim Peters Beautiful is better than ugly.Explicit is b ...

  9. 关于Django升级的一些联想

    刚刚阅读完django1.11的release note,从django1.4一直用到django1.11,以及即将到来的大版本django2.0,Django的版本升级策略和国内的技术现状对比称得上 ...

  10. .net core2.0通过entityframework访问Sqlserver数据库

    .net core经历2.0版本之后,已经非常稳定,完全可以进行企业级开发并跨平台部署到几乎任何服务器.个人测试效率是.net core是.net framework效率的3倍.其他语言没有测试,等测 ...