You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

有哪些库支持用标准流API从浏览器向Node.js服务端传输流数据?

适配Angular+低内存嵌入式Node.js的流式文件传输方案

方案1:@stardazed/streams + ws 组合(兼容性最优)

该方案完全符合Web Streams API和Node.js Stream标准,适配成本极低,不需要复杂的Angular配置:

  • 浏览器端:仅需安装@stardazed/streams和ws两个npm包,无需引入browserify全套依赖,也不需要额外修改Angular构建配置,可直接实现你需要的极简调用逻辑:
source_file.stream().pipeTo(wsWritable);
  • Node.js端:原生ws库返回的连接对象本身就是标准Node.js Readable流,直接调用即可:
socket.pipe(destination_file);
  • 该方案传输时仅缓存单个分片数据,内存占用在KB级别,完全适配嵌入式设备的低内存限制。对于不支持原生Web Streams API的旧版浏览器,搭配web-streams-polyfill即可覆盖95%以上的主流浏览器版本。

方案2:原生Fetch流式上传(轻量化最优)

你之前关注的Fetch请求流目前已经在Chrome、Edge等主流Chromium内核浏览器的正式版中支持,无需开启实验特性,如果你面向的用户使用2023年之后更新的浏览器,完全可以直接使用:

  • 浏览器端调用示例:
await fetch('/upload', {
  method: 'POST',
  body: source_file.stream(),
  duplex: 'half'
});
  • Node.js端无需引入任何第三方依赖,原生http模块的请求对象本身就是Readable流,直接req.pipe(destination_file)即可,是目前最轻量化的方案,基于HTTP/1.1的分块传输编码实现,没有额外协议开销。

方案3:binary.js 流传输库(功能最全)

如果你需要额外的传输控制能力(比如断点续传、进度回调、错误重传),可以选择binary.js,它已经内置了Web Streams和Node.js Stream的双向适配:

  • 浏览器端无需复杂配置,直接安装npm包即可调用,写法符合标准流API规范。
  • Node.js端收到的流直接是标准Node.js Readable实例,可直接pipe到文件流。
已有方案补充说明

你之前否定的部分方案其实可以通过扩展实现需求:

  • socket.io 核心库本身不支持流,但可以搭配socket.io-stream扩展包实现标准流的双向传输,如果你现有项目已经在使用socket.io做通信,可以直接扩展无需更换底层协议。
  • Axios 目前的beta版本已经支持请求流传入,如果你愿意使用beta版,可以直接传入ReadableStream作为请求体,无需额外适配。

内容的提问来源于stack exchange,提问作者Chris Malek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:24:07