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

来源:互联网 发布:淘宝怎么避免同款 编辑:程序博客网 时间:2024/05/22 01:32

我最不喜欢的浏览器的是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的部分是具体的实现文件上传的代码

0 0
原创粉丝点击