美文网首页
七牛上传图片出现文件已存在的错误(file exists)

七牛上传图片出现文件已存在的错误(file exists)

作者: mark666 | 来源:发表于2021-11-29 15:57 被阅读0次

    问题概述

    标题: 如果避免用户上传同名文件呢(即相同key值的文件)?

    以前自己做存储的时候,是自己计算文件 hash,上传时查询如果存在的就不保存了。

    现在改用七牛做存储了,看七牛上传返回的有文件 hash,但是不知道七牛的是如何计算出来的。

    有没有办法在上传之前就可以知道七牛的存储空间里有没有相同的 hash 已经存在了,这样就不用向七牛上传相同的文件了,还是仍然需要自己实现这种排重计算?

    答:

    七牛的 hash 算法是公开的。见: https://github.com/qiniu/qetag

    算法大体如下:

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

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

    • 其中 Block 是把文件内容切分为 4M 为单位的一个个块,也就是 BlockI = FileContent[I*4M:(I+1)*4M]

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

    解决方式:formdata 不指定key

     //formData.append('key',name); 
    

    相关文章

      网友评论

          本文标题:七牛上传图片出现文件已存在的错误(file exists)

          本文链接:https://www.haomeiwen.com/subject/rzrlxrtx.html