2010-04-14 41 views
23

(特別RestEasy的)如何使用jax-rs做多部分/表單文件上傳?

這將是很好(單個文件)有類似的方法簽名:

public void upload(@FormParam("name") ..., @FormParam("file") file: InputStream) 
... 

可行?還是我在做夢?似乎並不那麼簡單。

+0

邁克爾,你是怎麼使用測試這項服務?我無法弄清楚如何設置請求... – c12 2011-04-20 23:32:00

回答

26

關鍵是利用RESTEasy附帶的@MultipartForm註釋。這使您可以定義一個POJO,它包含表單的所有部分並輕鬆綁定它。

就拿以下POJO:

public class FileUploadForm { 
    private byte[] filedata; 

    public FileUploadForm() {} 

    public byte[] getFileData() { 
     return filedata; 
    } 

    @FormParam("filedata") 
    @PartType("application/octet-stream") 
    public void setFileData(final byte[] filedata) { 
     this.filedata = filedata; 
    } 
} 

現在,所有你需要做的就是用這個POJO的實體這將是這個樣子:

@POST 
@Path("/upload") 
@Consumes("multipart/form-data") 
public Response create(@MultipartForm FileUploadForm form) 
{ 
    // Do something with your filedata here 
} 
+1

raiglstorfer,你將如何設置測試此服務的請求? – c12 2011-04-20 23:31:19

+1

@ c12我使用cURL來測試我的RESTeasy方法。像這樣的東西應該工作:'curl -F [email protected] http:// localhost:8080/Project/rest-servlet/upload',更多信息在這裏:[link](http://curl.haxx.se /) – 2011-06-23 10:14:01

相關問題