我是Servlets和Spring Framework的新手。 我尝试通过Rest Service从目录中获取媒体文件。
对于视频/ mp4,我找不到任何东西。
对于音频,我做了这个: Writing mp3 file to response output stream
对于图像,我这样做了:
@RequestMapping("/tmp/{uuid}")
@ResponseBody
public ResponseEntity<InputStreamResource> getTmp(@PathVariable("uuid") String uuid)
throws IOException {
Path path = Paths.get("/media/psmaster/HDD/TUC-IPS/" + uuid);
String contentType = Files.probeContentType(path);
FileSystemResource file = new FileSystemResource("/media/psmaster/HDD/TUC-IPS/" + uuid);
return ResponseEntity
.ok()
.contentLength(file.contentLength())
.contentType(
MediaType.parseMediaType(contentType))
.body(new InputStreamResource(file.getInputStream()));
}
有人可以帮忙解决问题吗?
答案 0 :(得分:1)
如果您使用的是Spring 4.2,则可以使用StreamingResponseBody
,请查看此post
答案 1 :(得分:0)
你也可以给Spring Content看看。它允许您使用与Spring Data类似的编程技术,非常快速,轻松地构建内容服务。您还可以将其与Spring Data配对,以便另外存储和搜索视频的元数据。通过在项目中定义单个接口并包含适当的Spring Content依赖项,您可以创建一组REST端点,使您可以管理视频的整个生命周期,包括流式传输。
答案 2 :(得分:0)
您可以使用流和 HttpServletResponse 来编写媒体:
@RequestMapping(value = "/image/{imgName}", method = RequestMethod.GET)
public void getImageAsByteArray(@PathVariable String imgName , HttpServletResponse response) throws IOException {
InputStream in = servletContext.getResourceAsStream("/WEB-INF/images/" + imgName);
response.setContentType(MediaType.IMAGE_JPEG_VALUE);
IOUtils.copy(in, response.getOutputStream());
}
上面的示例提供了一个图像文件。
希望这会有所帮助