对象存储(Cloud Object Storage,COS)支持使用预签名 URL 进行对象的上传、下载,原理是将签名嵌入 URL 生成签名链接。您可以通过签名的有效期,控制预签名 URL 的生效时间。
您可以使用预签名 URL 进行下载,获取临时 URL 用于临时分享文件、文件夹,也可以通过设置一个很长的签名有效期,获得长期有效的 URL 用于长期分享文件;详情可参考 文件分享。
您也可以使用预签名 URL 进行上传,详情可参考使用 上传文件。
COS 支持对象的分享,您可以使用预签名 URL 将文件、文件夹限时分享给其他用户。预签名 URL 的原理是将签名嵌入拼接在对象 URL 之后,签名生成算法请参见 请求签名。
存储桶默认为私有读,直接通过对象 URL 下载会提示访问失败。在对象 url 后拼接了有效的签名后,得到预签名 URL;签名携带了身份信息,因此预签名 URL 可以用于下载对象。
// 对象 URL
https://test-12345678.cos.ap-beijing.myqcloud.com/test.png
// 预签名 URL(拼接了签名值的对象 URL)
https://test-12345678.cos.ap-beijing.myqcloud.com/test.png?q-sign-algorithm=sha1&q-ak=xxxxx&q-sign-time=1638417770;1638421370&q-key-time=1638417770;1638421370&q-header-list=host&q-url-param-list=&q-signaturexxxxxfxxxxxx6&x-cos-security-token=xxxxxxxxxxxx
以下提供的文件分享的几种方法,本质上都是在自动为您生成签名,并拼接到对象 URL 后面,生成可以直接用于下载、预览的临时链接。
您可以通过控制台或 COSBrowser 工具快速获取对象的临时链接。
登录 COS 控制台,单击存储桶名称,进入“文件列表”,单击对象详情。
进入对象详情页面,复制临时链接,有效期为1小时。
参考文档 生成文件链接,使用主账号密钥可获取最长2小时的临时链接,使用子账号密钥可获取最长1.5天的临时链接。
适合场景:对编程不熟悉的用户
操作步骤如下:
适合场景:批量获取临时链接、有编程基础的用户
控制台和 COSBrowser 获取的临时链接有效期很短,若需要时间更长的临时链接,也可以使用 SDK 生成预签名 URL,通过控制签名时长实现。生成方法可参考 预签名授权下载,选择您熟悉的开发语言。
您可以使用临时密钥或永久密钥用于生成预签名 URL。两者的区别在于,临时密钥的最长时效不超过36小时,永久密钥不会过期,这间接影响了预签名 URL 的有效期。
使用永久密钥生成预签名 URL(任意时长)
永久密钥不会过期,预签名 URL 的有效期取决于您设置的签名有效期。您可以直接调用 SDK 的预签名 URL 方法。操作步骤如下:
Android SDK | C SDK | C++ SDK | .NET SDK |
Go SDK | iOS SDK | Java SDK | JavaScript SDK |
Node.js SDK | PHP SDK | Python SDK | 小程序 SDK |
使用临时密钥生成预签名 URL(不超过36小时)
在前端直传的场景中,经常需要使用到临时密钥。关于临时密钥的说明和生成指引您可以参考:
临时密钥最长为36小时,预签名 URL 的有效期回取您设置的签名有效期和临时密钥有效期的最小值。假设您设置的签名有效期为 X,临时密钥的有效期为 Y,链接的实际生效时间为 T:
T=min(X,Y);由于 X<=36,所以 T<=36。
使用临时密钥生成预签名 URL,需要两步:
x-cos-security-token
。详情请参见下列各语言 SDK 文档:Android SDK | C SDK | C++ SDK | .NET SDK |
Go SDK | iOS SDK | Java SDK | JavaScript SDK |
Node.js SDK | PHP SDK | Python SDK | 小程序 SDK |
文件夹是一种特殊的对象,您可以通过控制台或 COSBrowser 工具分享文件夹,详情请参见 分享文件夹。
如果您希望第三方可以上传对象到存储桶,又不希望对方使用 CAM 账户或临时密钥等方式时,您可以使用预签名 URL 的方式将签名提交给第三方,以供完成临时的上传操作。收到有效预签名 URL 的任何人都可以上传对象。
本页内容是否解决了您的问题?