B-Teck!

お仕事からゲームまで幅広く

【Kotlin/Java】Jersey2でファイルアップロードを扱う

Jersey2でファイルアップロードを扱うときの方法を書いている記事があまり見つからなかったのでメモ。
StackOverfrowで見つけた。
java - Upload data method in REST web service - Stack Overflow

アップロードされたファイルはbyte配列InputStreamで扱えるようなので、
それを受け付けてやれば良いらしい。

Javaの場合

  • byte配列で受け取る
@Path("/upload")
class UploadResource {
    @POST
    @Consumes(MediaType.APPLICATION_OCTET_STREAM)
    public Response upload(byte[] input) {
        // 入力に対してなんかする
        return Response.ok().build();
    }
}
  • InputStreamで受け取る
@Path("/upload")
class UploadResource {
    @POST
    @Consumes(MediaType.APPLICATION_OCTET_STREAM)
    public Response upload(InputStream input) {
        // 入力に対してなんかする
        return Response.ok().build();
    }
}

Kotlinの場合

  • byte配列で受け取る
@Path("/upload")
class UploadResource {
    @POST
    @Consumes(MediaType.APPLICATION_OCTET_STREAM)
    fun upload(input : ByteArray) : Response {
        // 入力に対してなんかする
        return Response.ok().build()
    }
}
  • InputStreamで受け取る
@Path("/upload")
class UploadResource {
    @POST
    @Consumes(MediaType.APPLICATION_OCTET_STREAM)
    fun upload(input : InputStream) : Response {
        // 入力に対してなんかする
        return Response.ok().build()
    }
}