Spring Webflux上传大图像文件并以流式方式使用WebClient发送文件[关闭]

Posted

技术标签:

【中文标题】Spring Webflux上传大图像文件并以流式方式使用WebClient发送文件[关闭]【英文标题】:Spring Webflux Upload Large Image File and Send The File with WebClient in Streaming Way [closed] 【发布时间】:2020-10-14 03:40:51 【问题描述】:

我正在使用 spring webflux 功能样式。 我想创建一个接受大图像文件的端点,并使用 webClient 以流的方式将此文件发送到另一个服务。

所有文件处理都应该以流的方式进行,因为我不想因为内存不足而迷恋我的应用程序。

有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

大概是这样的:

  @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发送文件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从文件上传读取网址时图像自动旋转(当它是大图像时)?

使用功能性 Webflux 上传文件

上传大图像时网络连接中止后恢复或重新启动ajax请求?

带有 MultipartFile 的 Spring Webflux 415

通过 Spring WebClient 流式上传大文件

Laravel 和干预 - 如何禁止上传大图像