You need to enable JavaScript to run this app.
文档中心
文档控制台
注册
对象存储

对象存储

复制全文
下载 pdf
上传对象
追加上传(Harmony SDK)
复制全文
下载 pdf
追加上传(Harmony SDK)

appendObject 接口用于追加写对象。追加写是指在已上传的对象末尾追加内容。只能对类型为 Appendable 的对象使用此接口。通过直接上传和分片上传创建的对象类型为 Normal。
注意事项

  • 追加上传对象前,您必须具有 tos:PutObject 权限,具体操作请参见权限配置指南
  • 上传对象时,对象名必须满足一定规范,详细信息请参见对象命名规范
  • TOS 是面向海量存储设计的分布式对象存储产品,内部分区存储了对象索引数据,为横向扩展您上传对象和下载对象时的最大吞吐量,和减小热点分区的概率,请您避免使用字典序递增的对象命名方式,详细信息,请参见性能优化
  • 如果桶中已经存在同名对象,则新对象会覆盖已有的对象。桶开启多版本的场景下,则会保留原有对象,生成一个新版本号用于标识新上传的对象。
  • 追加上传对象不支持 Chunk-Encoded 的请求方式,当您追加上传网络流时请迭代获取数据再追加上传。

限制说明

使用 AppendObject 接口时,对象的大小限制说明如下:

  • 追加后的对象大小不能大于 5GiB。
  • 通过 AppendObject 创建的对象,进行 PutObject 操作,对象被覆盖且对象类型由 Appendable 变为 Normal。反之通过 PutObject 上传的对象不支持追加写操作。
  • AppendObject 创建的对象不支持拷贝。
  • 如果对象类型为低频存储或归档闪回存储,则无法使用 AppendObject 接口。
  • 如果您的存储桶处于开启或暂停多版本控制功能的状态下,则无法使用 AppendObject 接口。

示例代码

以下代码用于将字符流追加上传到目标桶。

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", // 填写 Bucket 所在地域。以华北2(北京)为例,"Provide your region" 填写为 cn-beijing。
  endpoint: "Provide your endpoint", // 填写域名地址
});

function handleError(error: 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);
  } else {
    console.log('unexpected exception, message: ', error);
  }
}

async function main() {
  try {
    const bucketName = 'node-sdk-test-bucket';
    const objectName = 'example_dir/example.txt';
    // 追加上传对象
    await client.appendObject({
      Bucket: bucketName,
      Key: objectName,
      // 将字符串 "Hello TOS" 追加上传到指定 example_dir 目录下的 example.txt
      Content: buffer.from('Hello TOS').buffer,
      Offset: 0,
    });

    // 查询刚刚上传对象的大小
    const res = await client.headObject({
      Bucket: bucketName,
      Key: objectName,
    });
    // object size: 9
    console.log('object size:', res.ContentLength);
  } catch (error) {
    handleError(error);
  }
}

main();

相关文档

关于追加上传的 API 文档,请参见 AppendObject

最近更新时间:2025.01.08 15:40:02
这个页面对您有帮助吗?
有用
有用
无用
无用