CS-Notes 学习笔记
Java 后端 · 系统设计

大文件上传怎样实现分片上传、断点续传和秒传?

先自己想一想,再看参考要点

参考要点

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

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。