通过RestEasy通过MultipartOutput上传文件

时间:2019-01-02 11:11:31

标签: java resteasy

我正在尝试通过RestEasyClient以编程方式将文件上传到enpoint。

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);

问题是后端无法“找到”我上传的文件

后端代码

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

物品总是空的。

如许多文章中所述,使用MultipartFormDataOutput :: addFormData可以但不适合我的用例。

也可以使用apache.http.client.HttpClient,但是我更喜欢避免向客户端添加依赖项。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

找到了。 诀窍是在添加零件时使用MultipartFormDataOutput并设置文件名

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