【问题标题】:Post file using webclient webflux to API accepting APPLICATION_OCTET_STREAM使用 webclient webflux 将文件发布到接受 APPLICATION_OCTET_STREAM 的 API
【发布时间】:2020-08-27 10:46:24
【问题描述】:
我想使用 Webflux Web 客户端将文件上传到 rest api。接受文件的 API 的内容类型为 APPLICATION_OCTET_STREAM 我如何使用 spring WebClient 做到这一点?
如何将 curl 以下转换为 WebClient 请求?
curl -i -X POST --header "Content-Type:application/octet-stream" --header --data-binary @myfile.pdf https://some-host/some-url
注意 - 我并不期待非常大的文件
【问题讨论】:
标签:
spring-boot
spring-webflux
spring-webclient
【解决方案1】:
这就是我上传文件的方式
第一步:将文件读取为字节数组
bytes = new FileSystemResource((filePath)).getInputStream()
.readAllBytes();
第二步:将字节数组传递给bodyValue方法
webClient.post()
.uri("Some-uri)
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.bodyValue(bytes)
.retrieve()
.toBodilessEntity())