主题
大文件上传
背景
上传大文件时,经常遇到的一些问题:
- 由于文件过大,上传很慢。
- 中途如果有网络波动或者断网了,需要重新上传。
实现思路
前端 chunk 切片,例如 1024MB 的文件,每片 4~5MB 左右。
片太小会产生过多请求、片太大单片失败重传代价高。移动网络或弱网可降到 1-2MB;内网或稳定环境可以增大。
将所有切片数据传递给后端,并且为每个切片通过(hash + index)进行标识。
前端限制并发上传数(常见 3–6 个并行请求),避免浏览器或后端压力。
后端组合切片。
核心点
- 切片上传:将大文件分成多个小块,逐个上传。
- 断点续传:记录上传进度,支持中断后继续上传。
后续优化点
- 前端切片时,为了避免主进程卡顿,使用 web worker 多线程切片。
- 支持“秒传”,计算文件整体 hash(如:sha-256)判断文件是否已存在,避免重复上传。
