【问题标题】:upload a file via RestEasy via MultipartOutput通过 MultipartOutput 通过 RestEasy 上传文件
【发布时间】:2019-01-03 17:53:43
【问题描述】:

我正在尝试通过 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);

items 总是空的。

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

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

有什么想法吗?

【问题讨论】:

    标签: java resteasy


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-07-22
      • 2012-04-26
      • 2016-11-18
      • 2013-03-24
      • 2017-06-27
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      相关资源
      最近更新 更多