Как выполнить загрузку файла multipart/form с помощью jax-rs?
(в частности, RESTeasy)
Было бы неплохо (для одного файла) иметь подпись метода, например:
public void upload(@FormParam("name") ..., @FormParam("file") file: InputStream)
...
выполнимо? или мне снится? похоже, не так просто.
Ответ 1
Ключом является использование аннотаций @MultipartForm, которые поставляются с RESTEasy. Это позволяет вам определить 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
}