![]() |
无聊的甜瓜 · Python运行错误TypeError: ...· 1 年前 · |
![]() |
考研的麦片 · 認識三甲基胺尿症(臭魚症)-高點醫護網· 1 年前 · |
![]() |
胆小的马克杯 · How to Install ...· 1 年前 · |
![]() |
胡子拉碴的凉面 · Word2016字符间距怎么调?Word20 ...· 1 年前 · |
我们提供名为
saveas
的数据处理接口,将处理结果作为资源保存到指定空间内,并赋以指定 Key。保存成功后,下一次可直接通过指定 Key 来访问该资源,以达到提升下载速度的效果。
处理结果不能跨区域另存
,例如华东Bucket内的文件经处理后结果无法另存到华北的Bucket。
同步调用
和
持久化(pfop)调用
,两者调用方式有轻微的差异。大多数使用场景下,建议使用
持久化处理
来实现处理结果存储,避免使用同步操作的 saveas 接口,提升访问速度。
saveas/<EncodedEntryURI>/deleteAfterDays/<deleteAfterDays>
fop中设置,直接在命令后跟 |saveas/SafeBase64(bucket:key)/deleteAfterDays/< deleteAfterDays >
即可, 如:
"persistentOps":"avthumb/mp3/ab/192k|saveas/dGVzdDoxLm1wMw==/deleteAfterDays/3"
表示处理后的数据名称为指定的 key 并且上传到指定的 bucket,在 3 天之后会从 bucket 自动删除。
同步调用需要签名。
saveas/<EncodedEntryURI>/sign/<Sign>/deleteAfterDays/<deleteAfterDays>
1.在下载 URL(不含 Scheme 部分,即去除 http : //)后附加 saveas 接口(不含签名部分):
NewURL = URL + "|saveas/<EncodedEntryURI>"
2.使用 SecretKey 对新的下载 URL 进行HMAC1-SHA1签名:
Sign = hmac_sha1(SecretKey, NewURL)
3.对签名进行URL安全的Base64编码:
EncodedSign = urlsafe_base64_encode(Sign)
4.在新的下载 URL 后拼接签名参数:
FinalURL = NewURL + "/sign/<AccessKey>:<EncodedSign>"
同步调用 saveas 算法示例,生成 saveas 请求的完整 Go 代码如下:
func makeSaveasUrl(URL, accessKey string, secretKey []byte, saveBucket, saveKey string) string {
encodedEntryURI := base64.URLEncoding.EncodeToString([]byte(saveBucket+":"+saveKey))
URL += "|saveas/" + encodedEntryURI
h := hmac.New(sha1.New, secretKey)
// 签名内容不包括Scheme,仅含如下部分:
// <Domain>/<Path>?<Query>
u, _ := url.Parse(URL)
io.WriteString(h, u.Host + u.RequestURI())
d := h.Sum(nil)
sign := accessKey + ":" + base64.URLEncoding.EncodeToString(d)
return URL + "/sign/" + sign
EncodedEntryURI 格式
本格式用于在 URI中指定目标资源空间与目标资源名,格式如下:
entry = '<Bucket>:<Key>'
encodedEntryURI = urlsafe_base64_encode(entry)
假设 entry 为 qiniuphotos:gogopher.jpg
,则对应的 encodedEntryURI 为 cWluaXVwaG90b3M6Z29nb3BoZXIuanBn=
。
URL安全的Base64编码
URL安全的Base64编码适用于以URL方式传递Base64编码结果的场景。该编码方式的基本过程是先将内容以Base64格式编码为字符串,然后检查该结果字符串,将字符串中的加号+
换成中划线-
,并且将斜杠/
换成下划线_
。
自定义资源名支持变量
自定义目标资源名时,可以使用变量,支持 预定义变量和自定义变量,变量引用格式为 {{.meta.var}}
或 字符串与{{.meta.var}}的组合
形式求值。
1.原资源是一个名为 resource/Ship.jpg 的图片:
http://78re52.com1.z0.glb.clouddn.com/resource/Ship.jpg
2.将图片做缩略处理:
http://78re52.com1.z0.glb.clouddn.com/resource/Ship.jpg?imageView2/2/w/200/h/200
3.对上述云处理结果进行持久化保存:
# 另存操作的目标空间与资源名
entryURI = "qiniu-developer:Ship-thumb-200.jpg"
#编码结果
encodedEntryURI = "cWluaXUtZGV2ZWxvcGVyOlNoaXAtdGh1bWItMjAwLmpwZw=="
#需要签名的部分
signingStr = "78re52.com1.z0.glb.clouddn.com/resource/Ship.jpg?imageView2/2/w/200/h/200|saveas/cWluaXUtZGV2ZWxvcGVyOlNoaXAtdGh1bWItMjAwLmpwZw=="
#签名结果
sign = "bcgojLbLKTsTlhm3XFMYq0cn3lW2G3NAuJYXZDDf:jGo09Pmq5vyG4c-rRb4qF3_dH1g="
4.最终得到的完整下载 URL:
http://78re52.com1.z0.glb.clouddn.com/resource/Ship.jpg?imageView2/2/w/200/h/200|saveas/cWluaXUtZGV2ZWxvcGVyOlNoaXAtdGh1bWItMjAwLmpwZw==/sign/bcgojLbLKTsTlhm3XFMYq0cn3lW2G3NAuJYXZDDf:jGo09Pmq5vyG4c-rRb4qF3_dH1g=
5.保存转码后资源可通过如下 URL 访问:
http://78re52.com1.z0.glb.clouddn.com/Ship-thumb-200.jpg
![]() |
无聊的甜瓜 · Python运行错误TypeError: expected str, bytes or os.PathLike object, not list的解决方法_xiaoxiaoqin@的博客-CSDN博客 1 年前 |
![]() |
考研的麦片 · 認識三甲基胺尿症(臭魚症)-高點醫護網 1 年前 |