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的部分是具体的实现文件上传的代码
版权声明:本文为博主原创文章,未经博主允许不得转载。