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>