Для того, чтобы JAX-RS сервис мог принимать файлы необходимо добавить maven-зависимость:
<dependency> <groupId>com.sun.jersey.contribs</groupId> <artifactId>jersey-multipart</artifactId> <version>1.8</version> </dependency>
Соберем простенькую форму:
<html> <head> </head> <body> <form action="services/hello/upload" method="POST" enctype="multipart/form-data"> <p> <b>File: </b> <input type="file" name="file" /> </p> <input type="submit"> </form> </body> </html>
И, собственно, сервис:
package ru.mydesignstudio.rest; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.apache.commons.io.IOUtils; import com.sun.jersey.core.header.FormDataContentDisposition; import com.sun.jersey.multipart.FormDataParam; @Path("/hello") public class RestService { @POST @Path("/upload") @Consumes(MediaType.MULTIPART_FORM_DATA) public Response uploadFile( @FormDataParam("file") InputStream inputFile, @FormDataParam("file") FormDataContentDisposition formData) throws Exception { String filename = "d:\\tmp\\" + formData.getFileName(); FileOutputStream output = new FileOutputStream( new File(filename)); IOUtils.copy(inputFile, output); return Response.ok() .entity("Saved to " + filename) .build(); } }
Запускаем приложение, открываем форму в браузере:

И загружаем файл
