Spring Webflux 上传大图文件并使用WebClient 以流方式发送文件
Spring Webflux Upload Large Image File and Send The File with WebClient in Streaming Way
我正在使用 spring webflux 函数式风格。
我想创建一个接受大图像文件的端点,并将这些文件以流式传输的方式发送到另一个带有 webClient 的服务。
所有文件处理都应该以流方式进行,因为我不希望我的应用程序因为内存不足而崩溃。
有没有办法做到这一点?
大概是这样的:
@PostMapping(value = "/images/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public Mono<ResponseEntity<Void>> uploadImages(@RequestPart("files") Flux<FilePart> fileParts) {
return fileParts
.flatMap(filePart -> {
return webClient.post()
.uri("/someOtherService")
.body(BodyInserters.fromPublisher(filePart.content(), DataBuffer.class))
.exchange()
.flatMap(clientResponse -> {
//some logging
return Mono.empty();
});
})
.collectList()
.flatMap(response -> Mono.just(ResponseEntity.accepted().build()));
}
它接受 MULTIPART FORM DATA,您可以在其中附加多个图像文件并将它们上传到其他服务。
我正在使用 spring webflux 函数式风格。 我想创建一个接受大图像文件的端点,并将这些文件以流式传输的方式发送到另一个带有 webClient 的服务。
所有文件处理都应该以流方式进行,因为我不希望我的应用程序因为内存不足而崩溃。
有没有办法做到这一点?
大概是这样的:
@PostMapping(value = "/images/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public Mono<ResponseEntity<Void>> uploadImages(@RequestPart("files") Flux<FilePart> fileParts) {
return fileParts
.flatMap(filePart -> {
return webClient.post()
.uri("/someOtherService")
.body(BodyInserters.fromPublisher(filePart.content(), DataBuffer.class))
.exchange()
.flatMap(clientResponse -> {
//some logging
return Mono.empty();
});
})
.collectList()
.flatMap(response -> Mono.just(ResponseEntity.accepted().build()));
}
它接受 MULTIPART FORM DATA,您可以在其中附加多个图像文件并将它们上传到其他服务。