Spring Boot提供具有错误内容类型的静态.webm和.mp4文件

时间:2016-07-05 18:40:06

标签: spring-mvc video spring-boot content-type static-content

我遇到了Spring Boot应用程序的问题,该应用程序应该提供静态的.webm和.mp4文件。当我将文件放在类路径上的static文件夹中时,应用程序会使用内容类型application/octet-stream而不是video/webm为它们提供服务,这使得它们无法使用<video>标记。我尝试过自定义资源处理程序,但它似乎没有提供任何设置标头的方法。图像和其他文件工作正常。

Spring Boot输出:

$ curl -s -D - localhost:8080/CmMs.webm -o /dev/null
HTTP/1.1 200
Last-Modified: Tue, 05 Jul 2016 18:08:41 GMT
Accept-Ranges: bytes
Content-Type: application/octet-stream
Content-Length: 648708
Date: Tue, 05 Jul 2016 18:22:40 GMT

输出应该看起来

$ curl -s -D - http://webm.land/media/CmMs.webm -o /dev/null
HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Tue, 05 Jul 2016 18:23:21 GMT
Content-Type: video/webm
Content-Length: 648708
Last-Modified: Tue, 05 Jul 2016 17:42:08 GMT
Connection: keep-alive
Accept-Ranges: bytes

1 个答案:

答案 0 :(得分:1)

Anton Novopashin的回答就是这个伎俩。这有助于:

@Component
public class ServletCustomizer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        MimeMappings mappings = new MimeMappings(MimeMappings.DEFAULT);
        mappings.add("webm", "video/webm");
        mappings.add("mp4", "video/mp4");
        container.setMimeMappings(mappings);
    }
}