大文件上传怎样实现分片上传、断点续传和秒传?
先自己想一想,再看参考要点
参考要点
- 直接上传请求时间长,中途断开要从头再来,还会超过网关对请求体的限制(Nginx 默认 1 MB)
- 分片上传:初始化时提交文件大小、整文件和各分片的 SHA-256,拿到上传 ID,分片可以乱序、并行上传,服务端校验后记录,全部到齐后按序拼接并校验整文件的哈希
- 断点续传:分片的完成状态要持久化(数据库或位图),中断后查询已完成的分片,只补传剩下的
- 秒传:服务端已有相同哈希的文件就直接建立引用,只在当前用户自己的空间内这样做,避免别人借哈希探测文件
- 同一分片重复上传直接覆盖,保证幂等,分片大小要兼顾请求数和单片失败时的重传量