我的网站上有视频倒带的问题.
我找出了http标题的问题.
我当前的控制器方法返回视频:
@RequestMapping(method = RequestMethod.GET, value = "/testVideo")
@ResponseBody
public FileSystemResource testVideo(Principal principal) throws IOException {
return new FileSystemResource(new File("D:\\oceans.mp4"));
}
Run Code Online (Sandbox Code Playgroud)
如何用字节范围支持重写以下代码?
我见过以下示例http://balusc.blogspot.in/2009/02/fileservlet-supporting-resume-and.html
但是这段代码看起来很难,我无法理解.我希望在春天mvc存在方式更简单.
我有一个下载文件的休息方法。但是,在文件完全复制到输出流之前,似乎不会在 Web 客户端上开始下载,这对于大文件可能需要一段时间。
@GetMapping(value = "download-single-report")
public void downloadSingleReport(HttpServletResponse response) {
File dlFile = new File("some_path");
try {
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment; filename="+ dlFile.getName());
InputStream inputStream = new FileInputStream(dlFile);
IOUtils.copy(inputStream, response.getOutputStream());
response.flushBuffer();
} catch (FileNotFoundException e) {
// error
} catch (IOException e) {
// error
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法“流式传输”文件,以便在我开始写入输出流时立即开始下载?
我还有一个类似的方法,它将多个文件放入一个 zip 文件中,将每个 zip 条目添加到 zip 流中,并且下载也仅在创建 zip 文件后才开始:
ZipEntry zipEntry = new ZipEntry(entryName);
zipOutStream.putNextEntry(zipEntry);
IOUtils.copy(fileStream, zipOutStream);
Run Code Online (Sandbox Code Playgroud) 我有以下返回文件的 spring mvc 方法:
@RequestMapping(value = "/files/{fileName}", method = RequestMethod.GET)
public FileSystemResource getFiles(@PathVariable String fileName){
String path="/home/marios/Desktop/";
return new FileSystemResource(path+fileName);
}
Run Code Online (Sandbox Code Playgroud)
我希望 ResourceHttpMessageConverter 根据其文档使用八位字节流类型创建适当的响应:
如果 JAF 不可用,则使用 application/octet-stream。
但是,尽管我正确地获取文件没有问题,但结果具有Content-Type: application/json;charset=UTF-8
你能告诉我为什么会这样吗?
(我使用 spring 版本 4.1.4。我没有明确设置任何消息转换器,我知道 spring 默认加载 ResourceHttpMessageConverter 和 MappingJackson2HttpMessageConverter,因为我的类路径中有 jackson 2,因为我有其他 mvc返回 json 的方法。
此外,如果我HttpEntity<FileSystemResource>手动使用和设置内容类型,或者用produces = MediaType.APPLICATION_OCTET_STREAM它指定它工作正常。
另请注意,在我的请求中,我没有指定任何接受内容类型,并且不希望依赖我的客户来做到这一点)