如何解决额外的字符被添加到通过 Spring @RestController 下载的视频文件中
我正在通过 Spring @RestController 下载文件,返回 ResponseEntity 对象的 OutputStream 中的视频字节。
@GetMapping(value = "/video/{id}/data")
@ResponseBody
public ResponseEntity<OutputStream> getVideoData(@PathVariable("id") Long id,HttpServletResponse response) {
try {
for (Video video : videos) {
if (id == video.getId()) {
if (videoDataMgr == null) {
videoDataMgr = VideoFileManager.get();
}
videoDataMgr.copyVideoData(video,response.getoutputStream());
return new ResponseEntity<OutputStream>(response.getoutputStream(),HttpStatus.OK);
}
}
response.sendError(HttpServletResponse.SC_NOT_FOUND);
} catch (IOException ioe) {
logger.log (Level.WARNING,ioe.toString());
}
return null;
}
如果我播放正在提供的视频和下载的视频,它们都会显示相同的内容。但是,逐字节比较 2 个 MP4 文件的内容时,以下测试失败:
@Test
public void testAddVideoData() throws Exception {
Video received = videoSvc.addVideo(video);
VideoStatus status = videoSvc.setVideoData(received.getId(),new TypedFile(received.getContentType(),testVideoData));
assertEquals(VideoState.READY,status.getState());
Response response = videoSvc.getData(received.getId());
assertEquals(200,response.getStatus());
InputStream videoData = response.getBody().in();
byte[] originalFile = IoUtils.toByteArray(new FileInputStream(testVideoData));
byte[] retrievedFile = IoUtils.toByteArray(videoData);
assertTrue(Arrays.equals(originalFile,retrievedFile));
}
在文件之间进行比较我可以看到视频几乎相同,除了末尾的一些字符(下载文件的内容在右侧):
{"ready": false} 来自哪里?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。