提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
针对七牛目前的私有空间、原图保护,如果希望 下载该类型或者开启原图保护下的空间下的文件资源,则需要进行签名后才能进行访问下载。
思路
创建自定义域名并绑定到一个空间上,即可通过该域名访问该空间下的文件资源;即:获取该文件资源的url,获取该url后,需要使用七牛提供的auth对象,获取下载的url——downloadUrl
通过http请求,根据downloadUrl 发送get请求进行下载。
注:测试也可以用七牛提供的测试域名,但不建议使用到实际项目中。
提示:以下是本篇文章正文内容,下面案例可供参考
使用步骤
代码如下(示例):
/**
targetUrl:
格式:http://<domain>/<key>
其中<domain>是 bucket 所对应的域名。七牛会给每个 bucket 分配一个测试域名,但由于 测试
域名的访问限制,生产环境需要 绑定自定义域名 访问。 <key>可理解为文件名,但可包含文件分隔
符等其它字符。
注意: key必须采用utf8编码,如使用非utf8编码访问七牛云将反馈错误
*/
public String getDownloadUrl(String targetUrl) {
//根据密钥配置,获取Auth对象
Auth auth = Auth.create(AccountMgr.ACCESS_KEY, AccountMgr.SECRET_KEY);
//获取下载文件路径,即:donwloadUrl
String downloadUrl = auth.privateDownloadUrl(targetUrl);
return downloadUrl;
}
总结
当您将空间设置成私有时,必须获得授权,才能对空间内的资源进行访问。
私有资源下载是通过HTTP GET的方式访问特定的 URL。私有资源URL与公开资源URL相比只是增加了两个参数e和token,分别表示过期时间和下载凭证。一个完整的私有资源 URL 如下所示:
http://<domain>/<key>?e=<deadline>&token=<downloadToken>
参数e表示 URL 的过期时间,采用Unix时间戳,单位为秒。超时的访问将返回 401 错误。参数token表示下载凭证。下载凭证是对资源访问的授权,不带下载凭证或下载凭证不合法都会导致 401 错误,表示验证失败。
注意:
- 如果请求方的时钟未校准,可能会造成有效期验证不正常,例如直接认为已过期。因此需要进行时钟校准。
- 由于开发者无法保证客户端的时间都校准,所以应该在业务服务器上创建时间戳,并周期性校准业务服务器时钟。
- token 必须放在请求的最后,token 之后的参数会被忽略。以请求
http://test.cinem.net/aaaa.jpg?e=1778754963&token=sQvk4AXf0rEkzcytkr…XjI0M:zwvwiM0wsMBRj46xcby05U=&attname=geral_TS-PFS3010-8ET为例,此时attname=geral_TS-PFS3010-8ET会被忽略,并不生效