文件秒传的实现方法

参考的博客

csdn 博客

文件的常用校验算法

  1. CRC(32/64)
  2. MD5
  3. SHA1

文件秒传的应用场景

  1. 用户上传
  2. 离线下载
  3. 好友分享

关键点:

  1. 文件 Hash(MD5,SHA1等)
  2. 用户文件关联

阿里OSS文档

CRC32 64 表示生产的 值有 32,64这么长

md5 会生成 108 位

sha1 160位

各个方面对比
  1. 校验值长度
  2. 校验值类别
  3. 安全级别
  4. 计算效率 [CRC 一般用于传输数据校验,效率高,参考TCP]

MD5 和 sha1 一般作为文件签名或者数据校验

百度云秒传的实现揭秘

【百度云盘- 秒传探秘】

秒传的核心是计算用户上传文件的2个MD5值,如果成功匹配到百度云服务器中已存在文件的MD5,则直接返回成功,从而实现秒传;

如果匹配不到,才会老老实实的以二进制的形式上传文件。

小文件,省去服务器比较MD5的步骤,直接二进制上传,此举可有效减小过多请求造成的服务器压力;

知乎论坛网友的解释

preview

可推测,随着文件增大到4G,用户的电脑计算这个大文件的MD5的所需的时间增长,用户体验不是很好,所以就干脆建议用户开会员,享受更快的上传速度。因为不是会员,所以会员机制的秒传机制,尚不得而知。

指纹技术能够计算更快

参考一个老外 开源的类库

github 项目地址

他是 通过 js 对大文件分片,读入大文件 然后计算这个大文件的 hash值

前端 计算 hash 传给后端判断结果。