1. 程式人生 > >處理檔案上傳後返回json資料在IE出現檔案下載問題

處理檔案上傳後返回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時候的返回格式

###

<mvc:annotation-driven>

<mvc:message-convertersregister-defaults="true">

<beanclass="org.springframework.http.converter.StringHttpMessageConverter"><constructor-argvalue="UTF-8"/>

</bean>

<refbean="mappingJacksonHttpMessageConverter"/>

<!-- json轉換器 -->

</mvc:message-converters>

</mvc:annotation-driven><!—處理避免IE下載json資料 -->

<beanid="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

<propertyname="supportedMediaTypes">

<list>

<value>text/html;charset=UTF-8</value>

</list>

</property>

</bean>

###如上,在註解配置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