<meta charset="UTF-8" />
<button id="upload">Upload</button>
<button id="copy">Copy</button>
<input id="file" type="file" />
<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({
accessKeyId: yourAccessKey,
accessKeySecret: yourSecretKey,
stsToken: yourSecurityToken,
const srcBucket = yourSrcBucket;
const srcObject = 'exampledir/putResumableObject-test';
const dstBucket = yourDstBucket;
const dstObject = 'exampledir/resumableCopyObject-test';
const partSize = 5 * 1024 * 1024;
const upload = document.getElementById('upload');
upload.addEventListener('click', async () => {
const data = document.getElementById('file').files[0];
await client.uploadFile({
let cancelTokenSource = TOS.CancelToken.source();
const copy = document.getElementById('copy');
copy.addEventListener('click', async () => {
client.resumableCopyObject({
cancelToken: cancelTokenSource.token,
progress: (percent, checkpoint) => {
tosCheckpoint = checkpoint;
console.log(percent, checkpoint);
cancelTokenSource.cancel('manual cancel');
console.log('cancel request');
cancelTokenSource = TOS.CancelToken.source();
client.resumableCopyObject({
checkpoint: tosCheckpoint,
cancelToken: cancelTokenSource.token,
progress: (percent, checkpoint) => {
tosCheckpoint = checkpoint;
console.log(percent, checkpoint);