You need to enable JavaScript to run this app.
导航
列举对象(Browser.js SDK)
最近更新时间:2024.02.04 18:31:06首次发布时间:2023.07.08 17:33:01

本文介绍如何列举指定桶下的对象、指定前缀的对象,默认返回最大 1000 个对象。

功能说明

可以通过 listObjects 列举桶内的对象信息,每次最大返回 1000 个对象。使用 listObjects 列举对象,默认返回 owner 信息。参数说明如下。

参数

描述

prefix

本次查询结果的前缀。

delimiter

对对象名称进行分组的字符。

marker

此次列举对象的起点。

encodingType

返回 key 编码类型。

maxKeys

最大返回数。

注意事项

  • 为了避免在浏览器环境中暴露您的火山引擎账号密钥信息(即 AccessKey ID 和 AccessKey Secret),强烈建议您使用临时访问凭证的方式执行 TOS 相关操作,详细说明,请参见使用 STS 临时 AK/SK+Token 访问火山引擎 TOS
  • Endpoint 为 TOS 对外服务的访问域名。TOS 支持的 Endpoint 信息,请参见访问域名 Endpoint

示例代码

简单列举

以下代码用于列举指定桶中的 10 个对象。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
  <body>
    <button id="upload">上传</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,
      });

      // 列举指定桶中的 10 个对象
      client
        .listObjects({
          maxKeys: 10,
        })
        .then(data => {
          console.log(`listObjects bucketName:${examplebucket} data: `, data);
        });
    </script>
  </body>
</html>

分页列举

以下代码用于分页列举指定桶中的对象。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>

  <body>
    <button id="upload">上传</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 listObjects = async () => {
        // 列举指定桶中的 10 个对象
        const { data } = await client.listObjects({
          maxKeys: 10,
        });
        console.log('firstPage', data);

        // 获取第二页两个对象
        const secondPage = await client.listObjects({
          bucket: examplebucket,
          maxKeys: 10,
          marker: data.NextMarker,
        });
        console.log('secondPage', secondPage.data);
      };

      listObjects();
    </script>
  </body>
</html>

列举指定前缀的所有对象

以下代码用于列举存储桶指定前缀的所有对象。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>

  <body>
    <!-- 导入 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 listObjects = async () => {
        // 获取包含前缀的对象
        const data = await client.listObjects({
          bucket: examplebucket,
          maxKeys: 10,
          prefix: '10',
        });
        console.log('data', data.data);
      };

      listObjects();
    </script>
  </body>
</html>

列举桶内所有对象

以下代码用于列举指定存储桶中所有对象。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>Document</title>
</head>

<body>
  <!-- 导入 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 listObjects = async () => {
      // 获取包含前缀的对象
      const data = await client.listObjects({
        bucket: examplebucket,
      });
      console.log('data', data.data);
    };

    listObjects();
  </script>
</body>
</html>

列举指定目录下的文件和子目录

TOS 只有对象的概念, 可通过创建一个大小为 0 并且以斜线 / 结尾的对象, 模拟目录的功能。 通过 delimiterprefix 两个参数可以模拟目录的功能:

  • 首先设置 delimiter/ 同时设置 prefix 为空, 可返回根目录下的对象和子目录信息。
  • 在设置 delimiter/ 同时设置 prefix 为子目录(subfiledir), 可返回子目录的对象和次级目录。

以下代码用于列举存储桶指定目录下的对象和子目录。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
  <body>
    <button id="upload">上传</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 listObjects = async () => {
        const data = await client.listObjects({
          bucket: examplebucket,
          delimiter: 'example_dir',
        });
        console.log('data', data.data);
      };

      listObjects();
    </script>
  </body>
</html>