分片上传核心点

  • 如何分片,用 WebUploader来实现
  • 如何合成一个文件;
  • 中断了从哪个分片开始

如何合并

在合之前,还得先解决一个问题,如何区分分块所属那个文件的。刚开始的时候,我是采用了前端生成了唯一uuid来做文件的标志,在每个分片请求上带上。不过后来在做秒传的时候我放弃了,采用了Md5来维护分块和文件关系

在服务端合并文件,和记录分块的问题,在这方面其实行业已经给了很好的解决方案了。参考迅雷

  • 每次下载中的时候,都会有两个文件,一个文件主体,
  • 另外一个就是文件临时文件,临时文件存储着每个分块对应字节位的状态

分块上传

分块上传可以说是我们整个项目的基础,像断点续传、暂停这些都是需要用到分块

每个分块数据的标识

  • 文件块的索引,大小,偏移,
  • 文件MD5,文件块MD5(需要开启)等信息
  • 服务端在接收这些信息后便可以非常方便的进行处理了。比如将块数据保存到分布式存储系统中

服务端的逻辑

服务端的业务逻辑

  • 分成初始化
  • 块处理
  • 文件上传完毕

需要前后端密切联系才能做好,

  • 前端需要根据固定大小对文件进行分片,并且请求中要带上分片序号和大小
  • 前端发送请求顺利到达后台后,
  • 服务器只需要按照请求数据中给的分片序号和每片分块大小(分片大小是固定且一样的)算出开始位置,与读取到的文件片段数据,写入文件即可