2013-08-20 7 views
9

私はJerseyを使用してCSVファイルを返信する休憩コールを作成しました。ジャージーレスとCSV応答

REST呼び出しコードは次のとおりです。

@GET 
@Path("/ReportWithoutADEStatus") 
@Produces({ "application/ms-excel"}) 
public Response generateQurterlyReport(){ 
    QuarterlyLabelReport quartLabelReport = new QuarterlyLabelReport(); 
    String fileLoc=quartLabelReport.generateQurterlyLblRep(false); 
    File file=new File(fileLoc); 
    return Response.ok(fileLoc,"application/ms-excel") 
      .header("Content-Disposition","attachment;filename=QuarterlyReport_withoutADE.csv") 
      .build(); 
} 

上記のコードは、一時の場所に作成したCSVファイルを読み込み、残りのコールを使用して、そのCSVを応答します。これは完全に正常に動作しています。しかし、今では要件が変わっています。 メモリ内のファイルコンテンツをストリームし、それをRest APIのcsvフォーマットで応答します。
私はメモリ内のファイルにストリーミングしてRESTでコンテンツを返信したことがありません。

誰か助けてくれますか?

ありがとうございます。

答えて

15

レスポンスエンティティとしてStreamingResponseを使用する必要があります。私のプロジェクトでは、バイト配列からこれらを返す簡単な方法を作りました。それは働いていた

return Response.ok(getOut(byteArray)).build(); //add content-disp stuff here too if wanted 
+0

:あなたが何かを希望あなたの主な方法に続いて

private StreamingOutput getOut(final byte[] excelBytes) { return new StreamingOutput() { @Override public void write(OutputStream out) throws IOException, WebApplicationException { out.write(excelBytes); } }; } 

:あなただけのバイトに準備ができたファイルに持っていることは、その後、これを呼び出す、最初のものです。ソリューションに感謝します。 – ram

+0

これが解決された場合は、受け入れ済みとして回答をマークできますか?ありがとう! –

+0

何についてフラッシュ? – Dejell

関連する問題