【问题标题】:How to use RESTEasy Client-Proxy with MultipartFile如何将 RESTEasy 客户端代理与 MultipartFile 一起使用
【发布时间】:2018-11-18 14:14:51
【问题描述】:

我尝试了几天来将 RESTEasy Client-Proxy 与 Multipart 表单一起使用。

在最好的情况下,我想将 MultipartFile 传递给代理。 例如。

//client:
//Resteasy proxy creation left out for brevity

public Response add(MultipartFile versionFile) {
   proxy.add(versionFile);
}

//server (interface):

@POST
@Consumes({MediaType.MULTIPART_FORM_DATA})
FormularDTO add(MultipartFile versionFile);

这总是以异常结束。

could not find writer for content-type multipart/form-data type: org.springframework.web.multipart.support

根据文档的建议,有两种处理 Multipart-Files 的方法:

a)MultipartOutput/MultipartInput

我应该通过代理发送什么?如果我发送MultipartOutput,我会得到同样的异常。 MultipartInputAbstract

b) 将 DTO 与 @MultipartForm 一起使用 项目目前使用的解决方案,但需要映射所有File-Metadata,新建DTO等。

参见下面的示例:

//DTO
public class MultipartFileDataDTO {

    @FormParam("file")
    @PartType(MediaType.APPLICATION_OCTET_STREAM)
    private InputStream file;

    @FormParam("contentType")
    @PartType(MediaType.TEXT_PLAIN)
    private String contentType;

     ...
}

//Server-Interface
@POST
@Consumes({MediaType.MULTIPART_FORM_DATA})
FormularDTO add(@MultipartForm MultipartFileDataDTO versionFile);

//Client-Mapping
MultipartFileDataDTO upload = new MultipartFileDataDTO();
upload.setFile(versionFile.getInputStream());
upload.setContentType(versionFile.getContentType());
...

我的问题:通过生成的 RESTEasy-Client-Proxy “传递” MultipartFile 的最简单方法是什么?

【问题讨论】:

    标签: java spring-boot file-upload multipartform-data resteasy


    【解决方案1】:

    我认为最简单的方法是创建一个简单的MultiplartFormDataOutput 对象并将其发送到代理。

    这是一个简单的例子:

    MultipartFormDataOutput output = new MultipartFormDataOutput();
    // It is possible to pass a File object or a InputStream in the addFormData
    output.addFormData("file", fileObject, MediaType.APPLICATION_OCTET_STREAM_TYPE, filename);
    proxy.add(output)
    

    【讨论】:

      猜你喜欢
      • 2015-05-16
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 2020-01-24
      • 2019-03-28
      相关资源
      最近更新 更多