【问题标题】:Changing returned content type in Spring MVC在 Spring MVC 中更改返回的内容类型
【发布时间】:2014-11-15 03:08:44
【问题描述】:

我有一个带有自定义扩展名的 zip 文件,需要以内容类型 application/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)

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    看起来我把问题复杂化了。我只需要在一个控制器方法上使用此功能,因此只需将 produces = "application/zip" 添加到我的 RequestMapping 就可以了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-15
      • 2014-01-13
      • 2013-01-05
      • 2019-07-03
      • 2020-11-14
      • 2012-08-02
      • 2018-08-05
      • 2022-09-30
      相关资源
      最近更新 更多