Spring 引导提供内容类型错误的静态 .webm 和 .mp4 文件
Spring Boot serving static .webm and .mp4 files with wrong content type
我的 Spring 引导应用程序有问题,该应用程序应提供静态 .webm 和 .mp4 文件。当我将文件放在类路径的 static
文件夹中时,应用程序为它们提供内容类型 application/octet-stream
而不是 video/webm
,这使得它们无法使用 <video>
标记。我试过自定义资源处理程序,但它似乎没有提供任何设置 headers 的方法。图片和其他文件工作正常。
Spring 引导输出:
$ 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
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);
}
}
我的 Spring 引导应用程序有问题,该应用程序应提供静态 .webm 和 .mp4 文件。当我将文件放在类路径的 static
文件夹中时,应用程序为它们提供内容类型 application/octet-stream
而不是 video/webm
,这使得它们无法使用 <video>
标记。我试过自定义资源处理程序,但它似乎没有提供任何设置 headers 的方法。图片和其他文件工作正常。
Spring 引导输出:
$ 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
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);
}
}