常见下载文件有返回文件流、字节数组、字符串、通过HttpServletResponse的io写 等形式
本文使用javax.ws.rs.core.Response
的形式实现文件下载
@GET
@Path("download")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response fileTemplateDownload(@Context SecurityContext context) throws FileNotFoundException, UnsupportedEncodingException {
String path = "path/to/file";
File file = new File(path);
return Response.status(Response.Status.OK) //指定返回状态码
.entity(file) //要返回的文件
.header("Content-Disposition","attachment;filename=" + URLEncoder.encode(file.getName(), "UTF-8")) //设置下载文件的文件名
.build();
}
上述如果要下载的文件是来自resource路径下面的静态资源文件,请使用Inputstream替代File,因为在打jar包后这种方式会无法访问到静态资源目录下的文件,导致程序出现异常。