当前位置:首页 > 电脑 > 正文

避免重复上传下载

晚上在七牛云储存开发者平台上绑定了http://cdn.muruoxi.pw这个节点域名来给博客的静态资源做加速,结果被通知还需要24小时的cname记录生效时间。

无聊的情况下看到七牛开发平台有篇对“如何避免上传相同的文件”的文章,转载如下:

 

七牛的 hash/etag 算法是公开的。算法大体如下:

  • 如果你能够确认文件 <= 4M,那么
    hash = UrlsafeBase64([0x16, sha1(FileContent)])。

     

    也就是,文件的内容的sha1值(20个字节),前面加一个byte(值为0x16),构成 21 字节的二进制数据,然后对这 21 字节的数据做 urlsafe 的 base64 编码。

  • 如果文件 > 4M,则
    hash = UrlsafeBase64([0x96, sha1([sha1(Block1), sha1(Block2), ...])])

     

    ,其中 Block 是把文件内容切分为 4M 为单位的一个个块,也就是

    BlockI = FileContent[I*4M:(I+1)*4M]。

     

上传到七牛云存储的时候,key 是可选的。如果你不指定 key,则自动以 hash 值作为 key,此时自动带了消重能力。两个用户上传相同的文件,最终的 key 是一样的。

为何在 sha1 值前面加一个byte的标记位(0x16或0x96)?

  • 0x16 = 22,而 2^22 = 4M。所以前面的 0x16 其实是文件按 4M 分块的意思。
  • 0x96 = 0x80 | 0x16。其中的 0x80 表示这个文件是大文件(有多个分块),hash 值也经过了2重的 sha1 计算。

额,保留下以后参考,省的搞个空间被人乱上传……


 

本博客资源若无特殊说明,均为和谐版本,无需付费,我不搞软件的会员,也不接受指定的和谐业务。

软件无法下载/安装/其它电脑问题,免费加QQ群(500人):949039296

有问题加上面的群,直接群里问,在线的时候有问必答,私聊一般都不看

想打赏微信扫右边的二维码,不建议超过10元,没指望靠这个养活我

 
文章标题:避免重复上传下载
本文作者:慕若曦
发表日期:2016-01-27 09:23 星期三    首发于    暮若夕
本文固定链接: https://www.muruoxi.com/pc/117.html
 
文章标签:
上一篇: 下一篇:

3 条评论

评论加载中...
  1. 板凳
    姜辰  

    付费大法好~~~

    2016年2月12日 下午5:51 评论
  2. 沙发
    装逼达人  

    七牛现在 越来越不好用了

    2016年2月5日 下午8:11 评论
    • 还行吧,目测梦月酱也是七牛。

      2016年2月5日 下午9:21 评论

发表评论

╮( ̄▽ ̄)╭ | (= ̄ω ̄=) | (>﹏<) | Σ( ° △ °|||)︴ | Σ(っ °Д °;)っ | X﹏X | (╯-_-)╯╧╧

小提示:提交评论后刷新本页面即可看到隐藏的文件哦~
十年之约
加载中……