向七牛云上传文件时,如何为最终保存的资源指定一个合适的名称(Key)呢?

仔细数来,有如下三种方法(按优先级排序):

  1. 上传端设定一个明确的资源名作为Key,忽略saveKey字段的设定值;
  2. 上传端不指定资源名,由业务服务器为上传策略的saveKey字段设定一个模板,通过嵌入魔法变量自定义变量的方式生成Key,比如$(bucket)-$(year)-$(mon)-$(day)-$(hour)-$(min)-$(sec)-$(x:username)
  3. 上传端不设定资源名,也不设定saveKey字段,则七牛云默认使用上传内容的Hash值作为Key。

注意:如果在scope字段中指定<Bucket>:<Key>形式的值,那么上述三种方法得到的Key必须与指定的<Key>一致才能实现覆盖语意,否则请求将失败并返回401状态码。

最后编程验证日期:2014-01-21


回目录


七牛云存储 © 2014 署名-非商业性使用-禁止演绎

允许自由转载,请注明作者及出处。


无锋之刃
135 声望27 粉丝

七牛云存储 技术支持


引用和评论

8 条评论
头像
widuu

有没有文件后缀名的魔法变量?

2014-01-17
头像
无锋之刃(作者)

目前没有,以后也许会加上。

2014-01-17
头像
widuu

@无锋之刃 我感觉这个可以有,不然感觉这个功能有点鸡肋,缺陷比较大~

2014-01-17
头像
无锋之刃(作者)

已截图转发,感谢你的建议~

2014-01-17
头像
张磊

确实感觉没有后缀名比较鸡肋。另外,是不是也不支持自定义前缀加 Hash 值作为文件名的组合?

2014-09-22
头像
无锋之刃(作者)

已经支持后缀名了,魔法变量名叫 $(ext) 。自定义前缀可以使用自定义变量实现。

2014-10-09
头像
张磊

自定义变量的话,无法使用魔法变量 $(hash),而我希望的命名规则是“自定义变量+hash”

2014-10-11
头像
JustQyx

persistentOps 的 |saveas/ 竟然不能使用魔法变量,这点不能忍!

例如我上传的视频,要进行三种格式的转码,如果支持魔法变量,那么我就可以做到为每种格式命名了,如:

avthumb/mp4/vcodec/libx264/vb/256k/r/24/vb/256k/acodec/libfaac/ab/64k|saveas/$(key)-low.mp4;avthumb/mp4/vcodec/libx264/vb/512k/r/24/vb/256k/acodec/libfaac/ab/64k|saveas/$(key)-medium.mp4;avthumb/mp4/vcodec/libx264/r/24/vb/1024k/acodec/libfaac/ab/64k|saveas/$(key)-high.mp4

xxxx-low.mp4
xxxx-medium.mp4
xxxx-high.mp4

2015-08-18