文档章节

SpringMVC+ajaxFileUpload上传图片 IE浏览器弹下载框问题解决方案

hymanPeng
 hymanPeng
发布于 2015/11/18 09:49
字数 352
阅读 29
收藏 0

SpringMVC+ajaxFileUpload上传图片 IE浏览器弹下载框问题解决方案

 


如题,简单记录一下这个问题的解决办法,导致问题的核心原因是:ajaxfileupload不支持响应头ContentType为application/json的设置,并且IE也不支持这种格式,而当我们用SpringMVC的@ResponseBody注解的时候会自动将响应类型设置为application/json,所以解决办法只有手动设置响应类型。

 

Step1 弃用@ResponseBody,通过流手动输出响应,并指定响应类型为text/html

 

@RequestMapping(value = "/fileImport2")
	public Map fileImport2(HttpServletRequest request,
			HttpServletResponse response, MultipartHttpServletRequest req,
			@RequestParam("filename") MultipartFile uploadFile) {
		response.setContentType("text/html;charset=utf-8");
		try {
			// 文件上传
			String updateLoadPath = FileOperateUtil.uploadExcel(req, request,
					uploadFile);
			String publishPath = request.getSession().getServletContext()
					.getRealPath("/");
			//...略
			response.getWriter().write("{\"data\":\"ok\"}");
		} catch (Exception e) {
			e.printStackTrace();
			try {
				response.getWriter().write("{\"data\":\"error\"}");
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}

		return null;
	}


Step2 将$.ajaxFileUpload的dataType设置为text(否则回调函数的值是[object.object])

 

$.ajaxFileUpload
            (
                {
                    url: postPath+"/app/studentScore/fileImport2", //用于文件上传的服务器端请求地址
                    secureuri: false, //是否需要安全协议,一般设置为false
                    fileElementId: 'filename', //文件上传域的ID
                    dataType: 'text', //返回值类型 一般设置为json
                    success: function (data)  //服务器成功响应处理函数
                    { 
                    		alert(data);
                    		var repObj = $.parseJSON(data);
                            if (repObj.data == 'ok') 
                            {
                                alert("导入成功!");
                            } 
                            else 
                            {
                                alert("数据异常!");
                            }
                    }
                }
            );


本文转载自:http://www.jeepshoe.org/411045144.htm

hymanPeng
粉丝 1
博文 13
码字总数 1889
作品 0
深圳
架构师
私信 提问
JEECG 3.7.5 Vue SPA 单页面应用版本发布

此版本为Vue+ElementUI SPA单页面应用版本,提供新一代风格代码生成器模板,采用Vue技术,提供两套精美模板ElementUI风格、Bootstrap分隔,大家速度体验,新鲜出炉,哇咔咔!! JEECG 是一款基...

Jeecg
2018/05/31
1K
6
jQuery 关于IE9上传文件无法进入后台原因及解决办法(ajaxfileupload.js第四弹)

第四弹的诞生完全不在自己最初的计划之中,是有个网友看了先前关于《ajaxfileupload.js系列》的文章后提出的问题,由于自己一直是用chrome浏览器去测试demo,完全忽略IE浏览器(其实是故意的...

我不会抽烟
2014/09/11
0
0
WebMIS v3.2发布,PHP底层开发系统

WebMIS-快速、实用、免费开源的PHP开发底层系统。基于CI的MVC模式开发的多用户、多权限解决方案,整合了Jquery、TinyMCE编辑器等插件、简洁美观的弹框效果; WebMIS 3.2 主要优化代码、归类封...

WebMIS
2013/07/24
3.2K
35
mpvue中使用vant weapp【一】

直接进入重点谈谈遇到的坑。 根据项目需求,一个页面,同时出现以下几种组件 1、input输入框 2、picker选择器 3、时间选择器 4、textarea 5、图片上传和预览 首先看vant-ui发现以上几个组件都...

登天的感觉
03/20
1K
0
jQuery 自制上传头像插件-附带Demo实例(ajaxfileupload.js第三弹)

这篇文章主要是对前两篇关于ajaxfileupload.js插件的文章 《ASP.NET 使用js插件出现上传较大文件失败的解决方法(ajaxfileupload.js第一弹》 《jQuery 关于ajaxfileupload.js插件的逐步解析(...

我不会抽烟
2014/09/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

02.日志系统:一条SQL更新语句是如何执行的?

我们还是从一个表的一条更新语句说起,我们创建下面一张表: create table T(ID int primary key, c int); 如果要将ID=2这一行c的值加1,SQL可以这么写: update T set c=c+1 where ID=2; 前...

scgaopan
今天
9
0
【五分钟系列】掌握vscode调试技巧

调试前端js 准备一个前端项目 index.html <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1......

aoping
今天
8
0
PhotoShop 高级应用:USM锐化/S锐化/防抖

、 高反差锐化+混合模式:叠加模式 【将更多的边缘细节添加到图像中】

东方墨天
今天
9
0
Python数据可视化之matplotlib

常用模块导入 import numpy as npimport matplotlibimport matplotlib.mlab as mlabimport matplotlib.pyplot as pltimport matplotlib.font_manager as fmfrom mpl_toolkits.mplot3d i......

松鼠大帝
昨天
7
0
我用Bash编写了一个扫雷游戏

我在编程教学方面不是专家,但当我想更好掌握某一样东西时,会试着找出让自己乐在其中的方法。比方说,当我想在 shell 编程方面更进一步时,我决定用 Bash 编写一个扫雷游戏来加以练习。 我在...

老孟的Linux私房菜
昨天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部