我有一个带有自定义扩展名的zip文件,需要作为内容类型应用程序/ zip返回,但出于某种原因,无论我做什么,它总是以text / html的形式返回。
在本文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 :(得分:0)
看起来我的问题太复杂了。我只需要在一个控制器方法上使用此功能,因此只需将produces = "application/zip"
添加到我的RequestMapping就可以了。
@RequestMapping(
value = "/download/{fileName:.+}",
method = RequestMethod.GET,
produces = "application/zip")
@ResponseBody
public FileSystemResource download(@PathVariable("fileName") String fileName) {
...
}