2012-12-14 28 views
12

Jersey Web Servicesを使用してPDFファイルをダウンロードする必要があります 私はすでに以下のことを行っていますが、受信したファイルサイズは常に0(ゼロ)です。Jerseyを使用してPDFファイルをダウンロードするには?

@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(); 

} 

お手数ですが、ありがとうございます!

答えて

4

エンティティとしてFileを指定するだけでは、それほど機能しません。

ファイルを自分で読んで、データとして(byte[]として)エンティティとして指定する必要があります。

編集:
また、出力をストリーミングすることもできます。これには2つの利点があります。 1)ファイル全体を読み取る必要がないため、メモリオーバーヘッドがなくてもファイルを使用できます。2)ファイル全体を最初に読み取らなくてもすぐにクライアントにデータを送信し始めます。ストリーミングの例については、https://stackoverflow.com/a/3503704/443515を参照してください。

0

これは、渡されたIDに位置ブロブを検索し、ブラウザでPDF文書としてそれを返します(それがデータベースに保存されたPDFファイルですと仮定します):

@Path("Download/{id}") 
@GET 
@Produces("application/pdf") 
public Response getPDF(@PathParam("id") Long id) throws Exception { 
    Entity entity = em.find(ClientCase.class, id); 
    return Response 
      .ok() 
      .type("application/pdf") 
      .entity(entity.getDocument()) 
      .build(); 
} 
関連する問題