(конкретно RESTeasy)
Было бы хорошо (для единственного файла) иметь сигнатуру метода как:
public void upload(@FormParam("name") ..., @FormParam("file") file: InputStream)
...
выполнимый? или я мечтаю? кажется, не настолько прост.
Главное - использовать аннотацию @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
}