import { TosClient, TosClientError, TosServerError } from '@volcengine/tos-sdk';
import fsp from 'fs/promises';
const client = new TosClient({
accessKeyId: process.env['TOS_ACCESS_KEY'],
accessKeySecret: process.env['TOS_SECRET_KEY'],
region: "Provide your region",
endpoint: "Provide your endpoint",
function handleError(error) {
if (error instanceof TosClientError) {
console.log('Client Err Msg:', error.message);
console.log('Client Err Stack:', error.stack);
} else if (error instanceof TosServerError) {
console.log('Request ID:', error.requestId);
console.log('Response Status Code:', error.statusCode);
console.log('Response Header:', error.headers);
console.log('Response Err Code:', error.code);
console.log('Response Err Msg:', error.message);
console.log('unexpected exception, message: ', error);
const bucketName = 'node-sdk-test-bucket';
const filePath = './example_dir/multipartExample';
const callbackUrl = '*** Provide your callback url ***';
const objectKey = '*** Provide your object key ***';
"callbackUrl" : "${callbackUrl}",
"callbackBody" : ${'"{\\"bucket\\": ${bucket}, \\"object\\": ${object}, \\"key1\\": ${x:key1}}"'},
"callbackBodyType" : "application/json"
} = await client.createMultipartUpload({
console.log('UploadId', UploadId);
const stats = await fsp.stat(filePath);
const totalSize = stats.size;
const partSize = 5 * 1024 * 1024;
while (offset < totalSize) {
const uploadResult = await client.uploadPartFromFile({
const eTag = uploadResult.data.ETag;
console.log(`partNumber${partNumber} Etag:`, eTag);
console.log('parts information', partsInfo);
const { data, requestId: completeMultipartUploadRequestId } = await client.completeMultipartUpload({
callback: Buffer.from(callback).toString('base64'),
callbackVar: Buffer.from(callbackVar).toString('base64'),
console.log('completeMultipartUpload Request ID: ', completeMultipartUploadRequestId);
console.log('result data:', data);