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.介绍 在介绍观察者模式之前,先来说一个日常生活中经常碰到的事(可能现在的人碰到的少了,但是老一辈人喷到的要多的多),那就是关于报纸的订阅.在报纸订阅这整个事件中牵扯到了报社.订阅 ...
一周排行