2010-04-14 5 views
23

(в частности Resteasy)Как выполнить загрузку файла multipart/form с помощью jax-rs?

Было бы неплохо (для одного файла), чтобы иметь метод подписи, как:

public void upload(@FormParam("name") ..., @FormParam("file") file: InputStream) 
... 

выполнимо? или мне снится? похоже, не так просто.

+0

Майкл, что вы используете проверить эту услугу? Я не могу понять, как настроить запрос ... – c12

ответ

26

Ключом является использование аннотаций @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 
} 
+1

raiglstorfer, как бы вы настроили запрос на проверку этой услуги? – c12

+1

@ c12 Я использую cURL для проверки моих методов RESTeasy. Что-то вроде этого должно работать: 'curl -F [email protected] http: // localhost: 8080/Project/rest-servlet/upload', больше информации здесь: [ссылка] (http://curl.haxx.se /) –

 Смежные вопросы

  • Нет связанных вопросов^_^