Jersey JAX-RS загрузка файла на сервер

Для того, чтобы 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();
  }
}

Запускаем приложение, открываем форму в браузере:

JAX-RS загрузка файлов на сервер
JAX-RS загрузка файлов на сервер

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

JAX-RS загрузка файлов на сервер
JAX-RS загрузка файлов на сервер