Доступ к частям почтового запроса multipart / form-data в веб-сервисе Java REST - PullRequest
7 голосов
/ 29 марта 2012

У меня есть многочастная форма, которая должна загружать файл, а также некоторые параметры.Это выглядит так:

<form id="upload" action="http://localhost:9998/test" method="post" enctype="multipart/form-data">
    <input name="inputfile" type="file" size="50" accept="application/octet-stream">
    <input name="someparameter" type="text" size="10">
    <input type="submit" value="Go!">
</form>

Веб-сервис выглядит следующим образом:

@Path("/test")
public class ServiceInterface {
    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public void execute(@FormParam(value="someparameter") String param) {
        System.out.println(param);
    }
}

При отправке формы значение «someparameter» всегда указывается как нулевое, хотя в формеЯ ввел значение.

Мои вопросы:

  1. Что не так с приведенным выше кодом?
  2. Как мне получить доступ к файлу, который передается с формой?

Я использую Джерси 1.10.

1 Ответ

14 голосов
/ 30 марта 2012

Хорошо, после нескольких часов поиска в Google я нашел ошибку в своем коде.

Вы должны использовать аннотацию @FormDataParam вместо @ FormParam.

Полученный код выглядит следующим образом:

@Path("/test")
public class ServiceInterface {
    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public void execute(
                   @FormDataParam("someparameter") String param
                   @FormDataParam("inputfile") File inputfile
                       )
    {
        System.out.println(param);
    }
}
...