我想流式传输视频文件,而不是下载它。我尝试使用以下代码。但它正在下载。
@GET
@Path("video")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response video() {
File file = new File("/home/lvaddi/Downloads/demoVideoFile.flv");
ResponseBuilder response = Response.ok(file, MediaType.APPLICATION_OCTET_STREAM);
response.header("Content-Disposition", "filename=videofile.flv");
return response.build();
}
答案 0 :(得分:2)
您应该使用StreamingOutput来执行此操作,而不是将文件作为正文返回(它将批量发送整个文件),例如:
new StreamingOutput() {
@Override
public void write(OutputStream output) throws IOException, WebApplicationException {
try {
InputStream input = <get input stream from your file>
IOUtils.copy(input, output);
output.flush();
} finally {
EntityUtils.consume(response.getEntity());
IOUtils.closeQuietly(response);
}
}
};
还有一个例子here