处理文件上传后返回json数据在IE出现文件下载问题

# 后台返回json格式返回在IE出现文件下载问题

最近在做一个文件上传时候遇到请求返回出现文件下载的情况,整理一下由于IE不支持Content-Type为application/json格式的返回类型,而上传时候设置请求Content-Type为multipart/form-data; 使用@ResponseBody就会将请求的返回Content-Type为application/json格式。具体的解决方法

方法1:去掉responseBody,然后自己定义response来设置返回值

###

@RequestMapping(value="{id}",method=RequestMethod.POST)

//@ResponseBody

public void update(@RequestParam(value = "sealfile") MultipartFile file, TSeal seal,HttpServletResponse response) throws TZException{

……

response.getWriter().write("{\"message\":\"成功\",\"status\":\"success\"}");

}

 

###

如上代码去掉@ResponseBody,然后在参数中添加HttpServletResponse response,通过response来设置返回值response.getWriter().write()

方法2:在sping中配置json时候的返回格式

###

text/html;charset=UTF-8

###如上,在注解配置mvc:annotation-driven中的mvc:message-converters中引入处理json数据返回的bean,mappingJacksonHttpMessageConverter

 

另外关于后台获取数据的说明:在使用form请求的时候,对表单数据封装,在后台直接设置@RequestBody 就可以得到form表单name和实体的对应,但是在添加文件属性type="file"之后,设置了form标签中添加multipart/form-data,然后请求的ContentType就变成了键Content-Type :multipart/form-data; @RequestBody不能处理这种格式的数据(application/json, application/xml格式可以用@RequestBody来处理的)。所以就不需要@RequestBody来获取表单数据,直接通过实体类型即可。

即 form表单提交的时候有type=file,后台不用@RequestBody

你可能感兴趣的:(问题)