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

通过Spring WebClient流式上传大型文件

东方俊明
2023-03-14

我也有这里提到的同样的问题。

然后我想把它作为一个上传体流到另一个服务endpoint。

该解决方案的生成方式如下:bodytype=org.springframework.web.reactive.function.bodyinserters不支持内容类型'application/octet-stream'的错误:

public String uploadFile(String fileId, String fileName) {
        InputStream fileInputStream = minioClient.getObject(bucketName, fileId);

        return webClient.post()
                .uri(properties.getUrl())
                .contentType(APPLICATION_OCTET_STREAM)
                .headers(httpHeaders -> {
                    httpHeaders.set(FILE_NAME, fileName);
                })
                .bodyValue(BodyInserters.fromResource(fileInputStream)
                .retrieve()
                .bodyToFlux(String.class)
                .blockFirst();
    }

共有1个答案

许彦
2023-03-14

您可以尝试使用databufferutils.readInputStream(..)(javadoc)创建flux 。然后使用适当的bodyinserters.fromDataBuffers(..)(javadoc)传递到.bodyvalue()。这不应该正确地将整个文件加载到内存中,而是缓冲并逐块发送它。

我不确定这是否适用于application/octet-stream作为内容类型,因为我无法测试它。

 类似资料:
  • Spring似乎无法将响应直接流式传输到文件,而不将其全部缓冲在内存中。使用较新的Spring 5实现这一点的正确方法是什么? 我看到人们在中找到了一些解决此问题的方法,但我更感兴趣的是使用以正确的方式解决此问题。 有许多使用下载二进制数据的示例,但几乎所有示例都将加载到内存中。

  • 问题内容: 我正在尝试设置一个非常基本的html5页面,该页面会加载20MB的.mp4视频。看来,浏览器需要下载整个内容,而不仅仅是播放视频的第一部分并在其余部分进行流传输。 我在搜索时发现的最接近的内容…我尝试了“手刹”和“数据回合”,两者均未发挥作用: 关于如何执行此操作或是否可行的任何想法? 这是我正在使用的代码: 问题答案: 确保moov(元数据)在mdat(音频/视频数据)之前。这也称为

  • 问题内容: 我想使用Ajax通过模式上传文件。我怎样才能做到这一点? 我的模态: 这是我的JavaScript文件: 这是我的控制器: 但它返回错误500。我认为Ajax不接受使用Bootstrap模式的文件上传。 问题答案: 您可以像这样通过ajax使用引导程序模式上载文件。 在表单标签中,使用属性enctype和html如下所示: js代码: 在您的控制器端,您可以执行以下功能来上传图像。

  • 问题内容: 我正在考虑将WCF用于一个项目,该项目需要人们能够将大文件(64MB-1GB)上传到我的服务器。我将如何使用WCF处理此问题,可能还具有恢复上传的功能。 为了处理更大的客户群,我想通过WCF测试JSON。这将如何影响文件上传?可以通过JSON完成,还是需要将上传部分切换到REST? 问题答案: 如果要上传大文件,则肯定需要查看WCF流模式。 基本上,您可以更改绑定上的传输模式;默认情况

  • 有没有办法通过网络浏览器上传大文件(超过80 Gb)?以前我一直在使用plupload上传文件(img、png、jpg),但它似乎不适用于较大的文件。我也想知道如何实现一个网页,用户可以上传像Mega.co.nz或Drive.google.com。如果使用web开发工具无法做到这一点,有谁能指导我如何划分 谢谢。

  • Spring启动应用程序。我有一个用于上传多部分文件的Restendpoint。 Spring boot版本为2.0.6。我尝试了以下方法。 1) spring:tomcat:最大http表单post大小:500MB最大swallow大小:500MB 2) spring:servlet:多部分:最大文件大小:500MB最大请求大小:500MB已启用:true 3) spring:servlet:多