如何使用泽西岛下载PDF文件?

2022-09-03 07:01:28

我需要使用泽西岛网络服务下载pdf文件,我已经做了以下操作,但收到的文件大小始终为0(零)。

 @Produces({"application/pdf"})
 @GET
 @Path("/pdfsample")
 public Response getPDF()  {

    File f = new File("D:/Reports/Output/Testing.pdf");
    return Response.ok(f, "application/pdf").build();

 }

请帮助做正确的方式,谢谢!!


答案 1

Mkyong总是提供。看起来您唯一缺少的是正确的响应标头。

http://www.mkyong.com/webservices/jax-rs/download-excel-file-from-jax-rs/

@GET
@Path("/get")
@Produces("application/pdf")
public Response getFile() {
    File file = new File(FILE_PATH);
    ResponseBuilder response = Response.ok((Object) file);
    response.header("Content-Disposition","attachment; filename=test.pdf");
    return response.build();
}

答案 2

你不能只是给 a 作为实体,它不是那样工作的。File

您需要自己读取文件,并将数据(作为)作为实体提供。byte[]

编辑:
您可能还想查看流式传输输出。这有两个优点;1)它允许您使用serve文件,而无需读取整个文件的内存开销,2)它立即开始将数据发送到客户端,而无需您先读取整个文件。有关流式传输的示例,请参阅 https://stackoverflow.com/a/3503704/443515