首页 > 解决方案 > 使用 webclient webflux 将文件发布到接受 APPLICATION_OCTET_STREAM 的 API

问题描述

我想使用 Webflux Web 客户端将文件上传到 rest api。接受文件的 API 具有内容类型,因为APPLICATION_OCTET_STREAM我如何使用 spring 来做到这一点WebClient

我如何在 curl 以下转换为WebClientrequest ?

curl -i -X POST --header "Content-Type:application/octet-stream" --header --data-binary @myfile.pdf  https://some-host/some-url

注意- 我不期待非常大的文件

标签: spring-bootspring-webfluxspring-webclient

解决方案


这就是我能够上传文件的方式

第 1 步 :将文件读取为字节数组

bytes = new FileSystemResource((filePath)).getInputStream()
                    .readAllBytes();

第 2 步 :将字节数组传递给bodyValue方法

webClient.post()
         .uri("Some-uri)
         .contentType(MediaType.APPLICATION_OCTET_STREAM)
         .bodyValue(bytes)
         .retrieve()
         .toBodilessEntity()) 

推荐阅读