gpt4 book ai didi

spring-boot - 如何在不获取 "No suitable writer found exception"的情况下将异步数据写入远程端点?

转载 作者:行者123 更新时间:2023-12-03 21:19:29 45 4
gpt4 key购买 nike

我有以下 Controller 方法:

@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, path = "/upload")
public Mono<SomeResponse> saveEnhanced(@RequestPart("file") Mono<FilePart> file) {
return documentService.save(file);
}

它调用了一个服务方法,我尝试使用 WebClient 将一些数据放入另一个应用程序中:
public Mono<SomeResponse> save(Mono<FilePart> file) {
MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder();
bodyBuilder.asyncPart("file", file, FilePart.class);
bodyBuilder.part("identifiers", "some static content");
return WebClient.create("some-url").put()
.uri("/remote-path")
.syncBody(bodyBuilder.build())
.retrieve()
.bodyToMono(SomeResponse.class);

}

但我收到错误:
org.springframework.core.codec.CodecException: No suitable writer found for part: file

我尝试了 的所有变体MultipartBodyBuilder (部分,异步部分,有或没有标题),我无法让它工作。

我用错了吗,我错过了什么?

问候,
亚历克斯

最佳答案

在从 Spring Framework Github 问题部分的一位贡献者那里得到答复后,我找到了解决方案。
为此,请执行以下操作:

The asyncPart method is expecting actual content, i.e. file.content(). I'll update it to unwrap the part content automatically.


bodyBuilder.asyncPart("file", file.content(), DataBuffer.class)
.headers(h -> {
h.setContentDispositionFormData("file", file.name());
h.setContentType(file.headers().getContentType());
});

如果两个 header 都没有设置,那么请求将在远程端失败,说它找不到表单部分。

祝任何需要这个的人好运!

关于spring-boot - 如何在不获取 "No suitable writer found exception"的情况下将异步数据写入远程端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55951310/

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