JAX-RSでファイルダウンロード

全国に寒波がきていたようで、ここしばらくは大分寒かったですね。
バイク乗りの私としては早々に暖かくなっていただきたいものです。
こんにちわ、DiceK Mikamiです。

今回は軽めのネタとして、JAX-RSを利用した際にバイナリを返却する方法を紹介したいと思います。
百聞は一見に如かず。
と言うことで、まずはサンプルコードを御覧ください。

import java.io.File;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;

@Path("/image")
public class SampleResource {
 @GET
 @Produces("image/png") 	//ポイント1
 @Path("{id}")
 public Response getImage(@PathParam("id") Integer imageId){
     File file = new File("<ファイルの場所>"); //ポイント2

     ResponseBuilder response = Response.ok((Object)file); //ポイント3
     String headerVal = "attachment; filename="+imageId.toString()+".png";
     response.header("Content-Disposition",headerVal);
     return response.build();
 }
}

全く簡単だ。
「今回はこれまで」といきたいところですが、ポイントをいくつか下記します。

——————————————————————–

本ブログは移転しました。記事の全文はこちら↓↓↓
http://www.infoscoop.org/blogjp/2012/02/11/jax-rsでファイルダウンロード/

——————————————————————–

About DiceK Mikami
infoScoop OpenSource developer. I played Java and Objective-C, etc. But, please pardon only JavaScript.

One Response to JAX-RSでファイルダウンロード

  1. DiceK Mikami より:

    2012/02/13 追記→思い立ったこと
    個人的にはFile形式で返却物を生成するのはスジ悪ではないかと思っています。
    ただ緊急回避あるいは面倒なことをしたくない時などでは便利です(モックを作るなど)
    File形式に落とし込む前にHTTP Componentなどで別サーバからファイルを取得しても良いし、Hibernateなどでデータベースからバイナリ取ってきても良いかと思います。
    (Hibernateの場合は普通にStore使った方が楽かもしれませんが)

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中