向七牛云上传文件时,如何为最终保存的资源指定一个合适的名称(Key)呢?
仔细数来,有如下三种方法(按优先级排序):
- 上传端设定一个明确的资源名作为Key,忽略saveKey字段的设定值;
- 上传端不指定资源名,由业务服务器为上传策略的saveKey字段设定一个模板,通过嵌入魔法变量与自定义变量的方式生成Key,比如
$(bucket)-$(year)-$(mon)-$(day)-$(hour)-$(min)-$(sec)-$(x:username)
; - 上传端不设定资源名,也不设定saveKey字段,则七牛云默认使用上传内容的Hash值作为Key。
注意:如果在scope字段中指定<Bucket>:<Key>
形式的值,那么上述三种方法得到的Key必须与指定的<Key>
一致才能实现覆盖语意,否则请求将失败并返回401状态码。
最后编程验证日期:2014-01-21
七牛云存储 © 2014 署名-非商业性使用-禁止演绎
允许自由转载,请注明作者及出处。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。有没有文件后缀名的魔法变量?
目前没有,以后也许会加上。
@无锋之刃 我感觉这个可以有,不然感觉这个功能有点鸡肋,缺陷比较大~
已截图转发,感谢你的建议~
确实感觉没有后缀名比较鸡肋。另外,是不是也不支持自定义前缀加 Hash 值作为文件名的组合?
已经支持后缀名了,魔法变量名叫 $(ext) 。自定义前缀可以使用自定义变量实现。
自定义变量的话,无法使用魔法变量 $(hash),而我希望的命名规则是“自定义变量+hash”
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