目前,我有两种不同的方法可以使用Jersey上传(请求的)文件:
@GET
@Path("download-file1/{fileName}")
public StreamingOutput downloadFile1(@PathParam("fileName") final String fileName)
throws FileNotFoundException {
final File file = new File("path/to/my/dir/" + fileName);
if (!file.exists()) {
throw new FileNotFoundException;
}
return new StreamingOutput() {
@Override
public void write(OutputStream output) throws IOException, WebApplicationException {
Files.copy(file, output);
}
};
}
@GET
@Path("download-file2/{fileName}")
public Response downloadFile2(@PathParam("fileName") final String fileName) throws FileNotFoundException{
final File file = new File("path/to/my/dir/" + fileName);
if (!file.exists()) {
throw new FileNotFoundException;
}
ResponseBuilder rb = null;
rb = Response.ok((java.lang.Object)file);
rb.header("Content-Disposition", "attachment; filename=" + fileName);
return rb.build();
}
我可以最好地使用这两个功能中的哪一个上传(所有类型)文件?
答案 0 :(得分:0)
来自远方的最佳选择是流式处理,只要您不将整个文件加载到服务器内存上,并且只要将文件流式传输到网络上即可。 享受:)