загрузить файл через RestEasy через MultipartOutput - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь программно загрузить файл в enpoint через RestEasyClient.

File file = new File("/Users/michele/path/file.txt");

MultipartOutput multipartOutput = new MultipartOutput();
multipartOutput.addPart(file, MediaType.APPLICATION_OCTET_STREAM_TYPE, "file.txt");
Entity<MultipartOutput> entity = Entity.entity(multipartOutput, MediaType.MULTIPART_FORM_DATA_TYPE);

//client is an instance of org.jboss.resteasy.client.jaxrs.ResteasyClient
client
   .target("http://localhost:8080/endpoint")
   .request()
   .post(entity);

Проблема заключается в том, что сервер не "находит" загруженный мной файл

серверная частьcode

DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload fileUpload = new ServletFileUpload(factory);
List<FileItem> items = fileUpload.parseRequest(httpReq);

items всегда empt.

Использование MultipartFormDataOutput :: addFormData, как описано во многих статьях, работает, но не подходит для моего варианта использования.

Также используетсяapache.http.client.HttpClient работает, но я предпочитаю избегать добавления зависимостей в мой клиент.

Есть идеи?

1 Ответ

0 голосов
/ 03 января 2019

Нашел это. Хитрость заключалась в том, чтобы использовать MultipartFormDataOutput и установить имя файла при добавлении детали

    MultipartFormDataOutput multipartOutput = new MultipartFormDataOutput();
    multipartOutput.addFormData("uploaded file", file, MediaType.APPLICATION_OCTET_STREAM_TYPE, "file.txt");
...