下载文件(Object)时,可以指定一个或多个限定条件。满足限定条件则下载,条件不满足则返回错误且不会触发下载行为。
tos:GetObject
权限,详细信息,请参见权限配置指南。tos:GetObjectVersion
权限,详细信息,请见权限配置指南。下载对象时可以指定下载对象条件,当满足条件时进行下载对象。限定条件如下:
参数 | 描述 |
---|---|
If-Match | 只有当传入的 |
If-None-Match | 只有当传入的 |
If-Modified-Since | 只有在对象自指定时间以来被修改过时才返回该对象,否则返回 |
If-Unmodified-Since | 只有在对象自指定时间以来未被修改过时才返回该对象,否则返回 |
以下示例代码用于指定条件下载文件。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Document</title> </head> <body> <button id="upload">上传</button> <button id="download">下载</button> <input id="file" type="file" /> <!-- 导入 SDK 文件 --> <script src="https://tos-public.volccdn.com/obj/volc-tos-public/@volcengine/tos-sdk@latest/browser/tos.umd.production.min.js"></script> <script type="text/javascript"> const client = new TOS({ // yourRegion 填写 Bucket 所在地域。以华北2(北京)为例,yourRegion 填写为 cn-beijing。 region: yourRegion, // 填写 endpoint 名称。 endpoint: yourEndpoint, // 从 STS 服务获取的临时访问密钥(AccessKey ID 和 AccessKey Secret)。 accessKeyId: yourAccessKey, accessKeySecret: yourSecretKey, // 从 STS 服务获取的安全令牌(SecurityToken)。 stsToken: yourSecurityToken, // 填写 Bucket 名称。 bucket: examplebucket, }); const name = 'exampledir/getobjectv2.txt'; let targetObjectETag = ''; // 上传文件并获取文件的 etag const upload = document.getElementById('upload'); upload.addEventListener('click', async () => { // 从输入框获取 file 对象,例如 <input type="file" id="file" />。 const data = document.getElementById('file').files[0]; try { // 分片大小最小为 5MB const partSize = 5 * 1024 * 1024; await client.uploadFile({ key: name, file: data, // 上传时指定分片大小 partSize, }); // 获取文件的 etag const result = await client.headObject({ key: name }); targetObjectETag = result.headers.etag; console.log('targetObjectETag', targetObjectETag); } catch (e) { console.log(e); } }); const download = document.getElementById('download'); download.addEventListener('click', async () => { try { const result = await client.getObjectV2({ key: name, // 指定下载条件 ifMatch: targetObjectETag, dataType: 'blob', }); const blob = result.data.content; // 创建标签。 const link = document.createElement('a'); // 将标签绑定 href 属性。 link.href = window.URL.createObjectURL(blob); // 指定下载后的本地文件名称。 link.download = 'getobjectv2.txt'; // 下载 Object。 link.click(); // 移除绑定的 URL。 window.URL.revokeObjectURL(link.href); } catch (e) { console.log(e); } }); </script> </body> </html>