import { TosClient, TosClientError, TosServerError } from '@volcengine/tos_harmonyos_sdk';
const client = new TosClient({
accessKeyId: "Provide your ak",
accessKeySecret: "Provide your sk",
securityToken: 'Provide your securityToken',
region: "Provide your region",
endpoint: "Provide your endpoint",
function handleError(error) {
if (error instanceof TosClientError) {
console.log('Client Err Name:', error.name);
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 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 = 'harmony-sdk-test-bucket';
const objectName = 'example_dir/multipartExample';
const filePath = './example_dir/multipartExample';
const meta: Record<string, string> = {};
const res = await client.createMultipartUpload({
ContentType: 'text/html',
ContentLanguage: 'zh-cn',
CacheControl: 'no-store',
Expires: new Date('2028/01/01'),
ContentDisposition: 'example.png',
ContentEncoding: 'deflate',
console.log('CreateMultipartUploadV2 Upload ID:', res.UploadId);
const stats = await fs.statSync(filePath);
const totalSize = stats.size;
const partSize = 5 * 1024 * 1024;
const partsInfo: UploadedPart[] = [];
while (offset < totalSize) {
const uploadResult = await client.uploadPart({
Content: fs.createReadStream(filePath, {
end: offset + partSize - 1,
const eTag = uploadResult.ETag;
console.log(`partNumber${partNumber} Etag:`, eTag);
partsInfo.push(new UploadedPart(partNumber, eTag));
console.log('parts information', partsInfo);
const completeRes = await client.completeMultipartUpload({
console.log('result status:', completeRes.StatusCode);