当前位置: 首页 > 知识库问答 >
问题:

Spring WebClient下载和上传文件

韩华美
2023-03-14

我需要创建一个从APIendpoint下载文件并将其上传到另一个APIendpoint的进程。该文件的最大大小为100MB,但我们将有许多进程并行运行。我试图用Spring WebClient实现它,而不需要将文件存储在内存中。当前代码将文件存储在内存中,因为使用大文件的测试会抛出OutofMemoryError。

public Mono<SyncStatusType> copy(Strin path1, String path2) {
    
    return this.download(path1)
        .collectList()
        .flatMap(dataBuffers -> 
            this.upload(path2, Mono.just(dataBuffers).flatMapMany(Flux::fromIterable)))
        .map(item -> SyncStatusType.SUCCESSFUL);
}

private Flux<DataBuffer> download(String path) {

    return this.getWebClient()
        .get()
        .uri(uriBuilder -> uriBuilder
            .path(path)
            .build())
        .retrieve()
        .bodyToFlux(DataBuffer.class);

}
private Mono<CustomFileDto> upload(String path, Flux<DataBuffer> dataBuffer) {
        
    return this.getWebClient()
        .put()
        .uri(uriBuilder -> uriBuilder
            .path(path)
            .build())
        .contentType(MediaType.APPLICATION_JSON)
        .body(BodyInserters.fromDataBuffers(dataBuffer))
        .retrieve()
        .bodyToMono(CustomFileDto.class)
    }

共有1个答案

令狐建修
2023-03-14

我有一个Spring WebFlux多部分示例,上传/下载文件并将它们存储在Mongo GridFS中,请检查我的GitHub上的完整代码。

测试代码演示了WebFlux客户机的交互。

 类似资料:
  • 我试图用PythonAnywhere和Flask编写一个非常简单的webapp,它允许用户上传文本文件,生成csv文件,然后让用户下载csv文件。不一定要花哨,只要管用就行了。我已经编写了从驱动器上的txt文件生成csv的程序。 现在,我的函数用以下命令打开驱动器上的文件:

  • 本文向大家介绍详解SpringBoot文件上传下载和多文件上传(图文),包括了详解SpringBoot文件上传下载和多文件上传(图文)的使用技巧和注意事项,需要的朋友参考一下 最近在学习SpringBoot,以下是最近学习整理的实现文件上传下载的Java代码: 1、开发环境: IDEA15+ Maven+JDK1.8 2、新建一个maven工程:   3、工程框架   4、pom.xml文件依赖项

  • 我正在尝试使用WebClient从外部服务下载文件并将其返回到客户端。在Rest控制器中,我有以下endpoint: 当我尝试击中endpoint时,我得到以下错误: 我已尝试返回

  • 本文向大家介绍springboot实现文件上传和下载功能,包括了springboot实现文件上传和下载功能的使用技巧和注意事项,需要的朋友参考一下 spring boot 引入”约定大于配置“的概念,实现自动配置,节约了开发人员的开发成本,并且凭借其微服务架构的方式和较少的配置,一出来就占据大片开发人员的芳心。大部分的配置从开发人员可见变成了相对透明了,要想进一步熟悉还需要关注源码。 1.文件上传

  • 本文向大家介绍php文件上传、下载和删除示例,包括了php文件上传、下载和删除示例的使用技巧和注意事项,需要的朋友参考一下 php文件上传、下载和删除示例大体思路如下,具体内容如下 一.文件上传 1.把上传文件的区域做出来 div1 2.把显示文件的区域做出来 div2 3.提交表单,上传文件 4.服务器接收文件数据 用$_FILE[name]接收 5.处理数据,看上传文件是否有错误 错误有如下几

  • 问题内容: 设置INTERNET_ACCESS等后,出现此错误。 这是我测试过的代码的另一部分,仍然收到该异常 } 问题答案: “ftp.194.90.81.149”: No address associated with hostname 您收到UnknownHostException的事实意味着ftp.194.90.81.149在DNS中不是真实的主机名。我怀疑其中的数字部分是您真正想要的。即