Extjs 上传文件 IE不兼容的问题提示下载保存

我最不喜欢的浏览器的是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 importForecast(@RequestParam MultipartFile file,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		Map 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(json, responseHeaders, HttpStatus.OK);
		
	}

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

 

更多相关文章
  • [标题]VB_老板键2005注册算法分析 [作者]forever[RCT] [工具]ollydbg 1.1, peid 0.93 [保护]注册码 [难度]简单 [连接]http://www2.skycn.com/soft/24666.html [简介]所谓"老板键",并非是给老板 ...
  • Snapchat公司CEO伊万·斯皮格尔24岁时,我半开玩笑地告诉老板我想当CEO,他几乎从椅子上掉下来.那是1974年,我还在IBM当软件开发员.那时,没有人觉得一个小工程师应该奢望坐上专为金牌销售预留的位置.但在老板的指点下,我认真做了一番自我审视,把当上CEO真正作为了目标.最终,30年后,我 ...
  • #include #include #define MaxSize 100 /*线索二叉树类型定义*/ typedef char DataType; typedef enum {Link,Thread}PointerTag;//Link=0表示指向孩子节点,Thread=1表示指向前驱节点或后继节点 ...
  •   首先恭喜大家挺过了测试二!为什么说“挺”呢?因为测试二的难度和测试一相比有一个比较大的跳跃:首先测试一仅仅利用现有硬件模块稍加改造而DIY一个蓝牙防丢器,而测试二则要求大家具有从脑袋里的一个想法到一个全新的小设备的实现的全部能力,显然该过程不是连几根线那么简单:其次测试一对蓝牙的使用仅限于信号搜 ...
  • 不管你有多好的商业点子也只能算是纸上谈兵,你需要的是将这些好的想法变为现实的资金,因此成功获得风投公司的亲睐对企业的发展至关重要.那么,究竟要怎样才能让自己的企业被风投公司选中呢?下面就是消费者信用与理财服务网站Gredit Karma 创始人Kenneth Lin为你支的招,Gredit Karm ...
  • 第2章.观察者模式 1.定义: 在对象之间定义一对多关系,当一个对象改变状态时,该对象的依赖会收到通知,并自动更新. 2.介绍 在介绍观察者模式之前,先来说一个日常生活中经常碰到的事(可能现在的人碰到的少了,但是老一辈人喷到的要多的多),那就是关于报纸的订阅.在报纸订阅这整个事件中牵扯到了报社.订阅 ...
一周排行
  • 跟我一起学extjs5(36--单个模块的设计[4根据菜单建立相应的模块])         前几节处理好了后台,现在又要处理前台了.首先是要修改菜单的选择事件,在创建一个module的时候将 moduleName参 ...
  • 简要描述: URL跳转 作用大家都懂的... 详细说明: http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_urlcheck?url=http:// www.2c ...
  • 170.ASM supports all but which of the following file types? (Choose all that apply.) A. Database files B. Sp ...
  • 当我们在ddms kill掉自己的进程.如何保证能够立刻重新启动我们的进程呢?在没有roo他权限的情况下,即保证基本不被别人杀死. 在AndroidManifest.xml 中主activity处设置为:androi ...
  • Android模拟器是公认的慢,而且不是一般的慢,即使在高性能的PC上,跟开发环境没关系,因为它就是慢.但是我们又必须使用模拟器,比如在测试Android不同版本的兼容性时,或者在测试不同屏幕尺寸的UI显示问题时,都 ...
  • 欧美可爱小孩情侣头像
  •   经验证的socket通讯问题 1.如果是模拟器和本机PC直接通讯,需要使用本机IP地址 而不是 10.0.2.2  如本机的静态地址为192.168.1.2 则直接使用该地址 2.接收和连接代码不能在UI主线程中 ...
  • [Setup]; 开启64位模式ArchitecturesInstallIn64BitMode=x64 [Run] ;根据是否是64位进行不同的操作Filename: "..."; Check: ...
  • 问题描述: 要在8*8的国际象棋棋盘中放8个皇后,使任意两个皇后都不能互相吃掉.规则是皇后能吃掉同一行.同一列.同一对角线的棋子.如下图即是两种方案: . 解决方案: 8*8的棋盘要摆放8个皇后,且不能同行同列同对角 ...
  • 1.基于java的全文检索引擎的简介         Lucene不是一个完整的全文检索应用,而是一个java语言写的全文检索引擎工具包,他可以很方便的嵌入到各种应用系统中实现信息的全文检索功能. 2.全文检索实现机 ...