根据调研,大文件上传主要有几个关键点需要解决:
- 文件分片
- 分片传输的协议
- 传输的可靠性
- 分布式系统重的分片传输
将待上传的文件转为 ArrayBuffer
,采用 slice
方法分割二进制数据为数组,并做好标记,最后依次传输
协议有三种解决方法:http、websoket、webRTC
。其中 http 可以采用 Promise 和 webWorker 两种方式
可靠性需要依赖数据分组时的 id
,由前后端相互确认
- 云原生的架构下,可以将所有 POD 的数据挂载路径统一到同一个 NFS 节点,这样无论是哪个 pod 处理上传请求,端点都是同一个 NFS
- 普通架构下,还需调研。可以尝试看看 Ng 有没有类似的解决方案