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<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的部分是具体的实现文件上传的代码

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

posted @ 2015-11-01 10:39  dingxiaoyue  阅读(287)  评论(0编辑  收藏  举报