Spring Boot - 将媒体(图像,mp3,mp4)文件写入响应输出流

时间:2015-09-27 20:44:28

标签: spring file spring-boot mp4 outputstream

我是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()));
}

有人可以帮忙解决问题吗?

3 个答案:

答案 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());
}

上面的示例提供了一个图像文件。

希望这会有所帮助