springmvc返回指定html,我如何使用springmvc返回一个视频,以便可以使用html5

作者探讨了如何在web服务器的REST API中提供视频预览功能,同时实现视频播放、暂停,以及可能的导航控制。通过比较不同方法,发现原始接口限制了导航选项。寻求解决方案,以改进API设计以支持视频导航操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果我在web服务器(Tomcat)中有一个文件并创建了一个标记,我可以观看视频,暂停它,浏览它,并在视频结束后重新启动它

但如果我创建一个REST接口,在请求时发送视频文件,并将其URL添加到标记中,我只能播放和暂停。没有倒带,没有快进,没有导航,什么都没有

那么,有没有办法解决这个问题?我是不是遗漏了什么?在

视频文件与REST接口在同一个服务器中,REST接口只检查会话,并在确定应该发送哪一个之后发送视频

这些都是我迄今为止尝试过的方法。它们都能工作,但都不允许导航

/*

* This will actually load the whole video file in a byte array in memory,

* so it's not recommended.

*/

@RequestMapping(value = "/{id}/preview", method = RequestMethod.GET)

@ResponseBody public ResponseEntity getPreview1(@PathVariable("id") String id, HttpServletResponse response) {

ResponseEntity result = null;

try {

String path = repositoryService.findVideoLocationById(id);

Path path = Paths.get(pathString);

byte[] image = Files.readAllBytes(path);

response.setStatus(HttpStatus.OK.value());

HttpHeaders headers = new HttpHeaders();

headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);

headers.setContentLength(image.length);

result = new ResponseEntity(image, headers, HttpStatus.OK);

} catch (java.nio.file.NoSuchFileException e) {

response.setStatus(HttpStatus.NOT_FOUND.value());

} catch (Exception e) {

response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());

}

return result;

}

/*

* IOUtils is available in Apache commons io

*/

@RequestMapping(value = "/{id}/preview2", method = RequestMethod.GET)

@ResponseBody public void getPreview2(@PathVariable("id") String id, HttpServletResponse response) {

try {

String path = repositoryService.findVideoLocationById(id);

File file = new File(path)

response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);

response.setHeader("Content-Disposition", "attachment; filename="+file.getName().replace(" ", "_"));

InputStream iStream = new FileInputStream(file);

IOUtils.copy(iStream, response.getOutputStream());

response.flushBuffer();

} catch (java.nio.file.NoSuchFileException e) {

response.setStatus(HttpStatus.NOT_FOUND.value());

} catch (Exception e) {

response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());

}

}

@RequestMapping(value = "/{id}/preview3", method = RequestMethod.GET)

@ResponseBody public FileSystemResource getPreview3(@PathVariable("id") String id, HttpServletResponse response) {

String path = repositoryService.findVideoLocationById(id);

return new FileSystemResource(path);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值