您的位置:首页 > 其它

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

2017-05-10 18:58 453 查看
转自:http://blog.csdn.net/u012116457/article/details/49531863

在使用Extjs做文件上传时,其他浏览器没有问题,但IE却一个劲提示保存文件,看服务端运行,它其实是运行成功了已经,但客户端的进度条却一个劲的在加载。

原因是:

IE浏览器对Content-Type = application/json,会出现下载保存

IE浏览器对Content-Type = text/html,返回信息按html处理

所以我们需要在代码中改变response的返回值来使IE上可以正常的运行:

JS代码:

[javascript] view
plain copy

var importform = new Ext.form.FormPanel({  

            labelAlign : 'right',  

            fileUpload:true,   

            items : [ {  

                xtype : 'filefield',  

                id:'upFile',  

                name : 'file',  

                fieldLabel : '导入',  

                labelStyle : "text-align:right;",  

          
4000
      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();  

                    
13c86
        },  

                            failure : function(response, options) {  

                                Ext.Msg.alert('失败', '导入文件失败');  

                            }  

                        });  

                          

                    }  

                }  

            }, {  

                text : '重置',  

                handler : function() {  

                    importform.getForm().reset();  

                }  

            }, {  

                text : '取消',  

                handler : function() {  

                    importform.getForm().reset();  

                    importWin.hide();  

                }  

            } ]  

  

        });  

controller代码:

[java] view
plain copy

/** 

     * 上传 即导入数据 

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

本人的前端不是ext所写,也有此问题,主要出现在有上传文件的接口。

规避此问题的关键代码部分:

        HttpHeaders responseHeaders = new HttpHeaders();  

        responseHeaders.setContentType(MediaType.TEXT_HTML);  

        String json = "{\"success\":true,\"message\":\""+result+"\"}";  

        return new ResponseEntity<String>(json, responseHeaders, HttpStatus.OK);
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: