zoukankan      html  css  js  c++  java
  • 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的部分是具体的实现文件上传的代码

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

  • 相关阅读:
    泛型的二阶构造
    二叉树的优势
    浅谈AVL树,红黑树,B树,B+树原理及应用
    AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中?
    据库索引及其数据结构
    关系型数据库工作原理-数据结构(3)
    数据库的最简单实现
    为什么使用数据库?数据库的存取效率如何保证?
    iOS原生数据存储策略
    数据存储要解决的几个问题
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4931722.html
Copyright © 2011-2022 走看看