Skip to content

大文件上传

背景

上传大文件时,经常遇到的一些问题:

  • 由于文件过大,上传很慢。
  • 中途如果有网络波动或者断网了,需要重新上传。

实现思路

  1. 前端 chunk 切片,例如 1024MB 的文件,每片 4~5MB 左右。

    片太小会产生过多请求、片太大单片失败重传代价高。移动网络或弱网可降到 1-2MB;内网或稳定环境可以增大。

  2. 将所有切片数据传递给后端,并且为每个切片通过(hash + index)进行标识。

    前端限制并发上传数(常见 3–6 个并行请求),避免浏览器或后端压力。

  3. 后端组合切片。

核心点

  • 切片上传:将大文件分成多个小块,逐个上传。
  • 断点续传:记录上传进度,支持中断后继续上传。
后续优化点
  1. 前端切片时,为了避免主进程卡顿,使用 web worker 多线程切片。
  2. 支持“秒传”,计算文件整体 hash(如:sha-256)判断文件是否已存在,避免重复上传。

基于 MIT 许可发布