2014-09-20 41 views
0

我有一個帶有需要作爲內容類型application/zip返回的自定義擴展的zip文件,但由於某種原因,無論我做什麼,它總是以text/html形式返回。在Spring MVC中更改返回的內容類型

似乎配置一個內容協商管理器,如在這篇文章https://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc會做的伎倆,但它似乎並沒有爲我工作。如果我通過相同的控制器/方法請求一個.zip文件,它可以很好地工作。

我試圖配置幾個不同的屬性,試圖完成我的目標,但這裏是我的最新從我的application-context.xml。

<bean id="contentNegotiationManager" 
    class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> 
    <property name="favorPathExtension" value="true" /> 
    <property name="ignoreAcceptHeader" value="true" /> 
    <property name="defaultContentType" value="application/zip" /> 
    <property name="mediaTypes"> 
     <map> 
      <entry key="xyz" value="application/zip" /> 
     </map> 
    </property> 
</bean> 

這裏是我的頭從我的瀏覽器:

Remote Address:::1:8080 
Request URL:http://localhost:8080/app/faces/download/148943e4ead.xyz 
Request Method:GET 
Status Code:200 OK 

Request Headers 

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:en-US,en;q=0.8 
Cache-Control:max-age=0 
Connection:keep-alive 
Cookie:JSESSIONID=gcvvicbqtlyyrbgnth3qurfy; jwplayer.volume=100; SESSION-GUID=f8vdloov22qbmx6r; plushContainerWidth=100%25; plushMultiOps=1; plushNoTopMenu=0; SQLiteManager_currentLangue=2; _ga=GA1.1.1642769916.1411099193 
DNT:1 
Host:localhost:8080 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 

Response Headers 

Content-Length:2585515 
Content-Type:text/html 
Server:Jetty(6.1.26) 

回答

0

看起來像我的過於複雜的問題。我只需要一種控制器方法的這種功能,所以只需將produces = "application/zip"添加到我的RequestMapping中即可。

@RequestMapping(
     value = "/download/{fileName:.+}", 
     method = RequestMethod.GET, 
     produces = "application/zip") 
@ResponseBody 
public FileSystemResource download(@PathVariable("fileName") String fileName) { 
... 
}