通过 copyObject 可以在同一地域的存储桶之间拷贝对象,也可以在同一个存储桶内拷贝对象。拷贝时可以设置指定新的元数据信息或保持源对象的元数据信息。
以下代码展示如何通过 copyObject 从桶 srcBucket 拷贝对象 srcObject 到桶 dstBucket 中的对象dstObject。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<button id="upload">上传</button>
<button id="copy">复制</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 srcBucket = srcBucket; // 源桶
const srcKey = 'exampledir/putObject-test'; // 源对象
const dstBucket = dstBucket; // 目标桶
const dstObject = 'exampledir/copy-test'; // 目标对象
// 上传文件
const upload = document.getElementById('upload');
upload.addEventListener('click', async () => {
// 从输入框获取 file 对象,例如 <input type="file" id="file" />。
const data = document.getElementById('file').files[0];
try {
await client.uploadFile({
bucket: srcBucket,
key: srcKey,
file: data,
});
} catch (e) {
console.log(e);
}
});
// 复制文件
const copy = document.getElementById('copy');
copy.addEventListener('click', async () => {
try {
const result = await client.copyObject({
bucket: dstBucket,
key: dstObject,
srcBucket,
srcKey,
});
console.log('result', result);
} catch (e) {
console.log(e);
}
});
</script>
</body>
</html>