タグ別アーカイブ: JAX-RS

Tomcat の PUTメソッドが息をしていない問題

| コメントをどうぞ

あけましておめでとうございます。
本年も有為無為に関わらず書き散らかしていく所存にございます。
生暖かい眼差しでお付き合いいただければと思います。
どうぞよろしくお願いいたします。
DiceK Mikamiです。

さて突然なのですが、アプリケーションサーバにTomcatを利用していると、たまにとんでもない大穴にはまったりします。
今回はそんなお話です。
続きを読む

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

| 1件のフィードバック

全国に寒波がきていたようで、ここしばらくは大分寒かったですね。
バイク乗りの私としては早々に暖かくなっていただきたいものです。
こんにちわ、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();
 }
}

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

  • ポイント1
    返却するバイナリのMIMEタイプを指定します。
  • ポイント2
    バイナリをjava.io.File形式で取得します。
  • ポイント3
    javax.ws.rs.core.Response.ResponseBuilderを使用して、ヘッダを追加します。

バイナリファイルをダウンロードさせたいという要求があった場合などに便利ですね。
サンプルでは画像ファイルを返却するようにしておりますが、
@ProducesにてダウンロードさせたいバイナリのMIMEタイプを指定すれば、切り替えることができます。