(特别是RESTeasy)
对于单个文件来说,有一个方法签名就好了:
public void upload(@FormParam("name") ..., @FormParam("file") file: InputStream)
...
可行?还是我在做梦?似乎并不那么简单。
答案 0 :(得分: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
}