gpt4 book ai didi

java - 如何将 RESTEasy 客户端代理与 MultipartFile 结合使用

转载 作者:行者123 更新时间:2023-11-30 06:08:28 24 4
gpt4 key购买 nike

我尝试了几天将 RESTEasy 客户端代理与多部分表单一起使用。

在最好的情况下,我想将 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

根据文档的建议,有两种方法来处理多部分文件:

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 的最简单方法是什么?

最佳答案

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

这是一个简单的示例:

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)

关于java - 如何将 RESTEasy 客户端代理与 MultipartFile 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50761977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com