以下載檔案來說,範例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
@Path ( "/file" ) @Provider public class FileProcessing { @GET @Path ( "/get" ) @Produces (MediaType.APPLICATION_OCTET_STREAM) public Response getFile () { Response response = null ; File p12File = new File( "/home/user/test" ); byte [] bytes = StreamReader.get(p12File); if (bytes != null ) { response = Response. ok(bytes, MediaType.APPLICATION_OCTET_STREAM_TYPE). header( "content-disposition" , "attachment; filename=" + p12File.getName()). header( "content-MD5" , this .getMd5Hash(p12File)). build(); } else { response = Response.serverError().status( 404 ).build(); } return response; } } |
需要塞什麼資料都可以透過 ResponseBuilder.ok() 把東西放進去~
然後在 ResponseBuilder.header() 方法去指定 Response 中需要的 Header(當然不放也可以)。
其中在範例程式碼中,StreamReader.get() 是我自己寫的小工具,目的就只是把 File 轉成 byte array 回傳而已。
上傳檔案的方法也很類似,在宣告 Method 時指定 @Consumes 的標記,然後取得 InputStream 後把 Stream 寫入到檔案即可。
參考資料:
1、Return a file using Java Jersey
2、Reading HttpURLConnection InputStream - manual buffer or BufferedInputStream?
3、File Upload Example In Jersey
沒有留言:
張貼留言