七牛 图片上传 是否存在秒传,图片A, 图片B(copy 图片A)? 图片A 大小2M左右

油菜
  • 61

七牛 图片上传 是否存在秒传,图片A, 图片B(copy 图片A)?
图片A 大小2M左右, A上传需要1分钟,B上传是否能非常迅速的上传?

回复
阅读 4.9k
1 个回答

秒传属于应用自身行为。一般来说,秒传和消重相关。A、B虽然path不同,但在七牛的key一样,比如取文件内容的sha1(或者用七牛的文件hash/etag算法),这样上传一个文件前查下七牛服务器有没有某个sha1(或七牛的hash/etag),有就说明不用传了,这就实现了秒传。

  • A、B 的 path 和七牛的 key 的对应关系,应用应该有个数据库来维持
  • 查询七牛有没有某个 key,可以用 stat api。这个函数支持批量操作(batch)。
  • 关于七牛的 hash/etag 算法,可以见 https://github.com/qiniu/qetag
  • 七牛的上传策略中有 saveKey 字段,可以在上传客户端不指定 key 时计算一个 key。比如 saveKey = "$(etag)" 就是以七牛的 hash/etag 作 key;saveKey = "$(sha1)" 就是以文件内容的 sha1 作 key。这个 saveKey 并不能够用于秒传,但可以实现消重,适合那些客户端没有能力做秒传的场景,比如 Web 端。

如果不希望做消重,并且自己有判断两个文件一致的方法,七牛也有 copy api 可以实现秒传。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进