【发布时间】: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,我会得到同样的异常。 MultipartInput 是 Abstract。
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