与传统文件系统中的层级结构不同,OSS内部使用扁平结构存储数据。即所有数据均以对象(Object)的形式保存在存储空间(Bucket)中。为方便您对Object进行分组并简化权限管理,您可以通过目录的层次来组织Object。

创建目录

以下代码用于创建目录。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.17.1.min.js"></script>
  </head>
  <body>
    <script>
      const client = OSS({
        // yourRegion填写Bucket所在地域。以华东1(杭州)为例,yourRegion填写为oss-cn-hangzhou。
        region: 'yourRegion',
        // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
        accessKeyId: 'yourAccessKeyId',
        accessKeySecret: 'yourAccessKeySecret',
        // 从STS服务获取的安全令牌(SecurityToken)。
        stsToken: 'yourSecurityToken',
        // 填写Bucket名称。
        bucket: 'examplebucket'
      });
      // 填写目录名称,目录需以正斜线结尾。
      client
        .put("log/", new Blob([]))
        .then((r) => {
          console.log(r);
        })
        .catch((e) => {
          console.log(e);
        });
    </script>
  </body>
</html>

删除目录

警告 删除目录会同步删除目录下包含的子目录以及所有文件,请谨慎操作。

您可以通过指定Prefix的方式删除目录及目录下的所有文件。例如,您希望删除存储空间examplebucket下目录log及该目录下的所有文件,请将示例代码中的Prefix参数指定为log/

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.17.1.min.js"></script>
  </head>
  <body>
    <script>
    const client = new OSS({
      // yourRegion填写Bucket所在地域。以华东1(杭州)为例,yourRegion填写为oss-cn-hangzhou。
      region: 'yourRegion',
      // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
      accessKeyId: 'yourAccessKeyId',
      accessKeySecret: 'yourAccessKeySecret',
      // 从STS服务获取的安全令牌(SecurityToken)。
      stsToken: 'yourSecurityToken',
      // 填写Bucket名称,例如examplebucket。
      bucket: "examplebucket",
    });

// 处理请求失败的情况,防止promise.all中断,并返回失败原因和失败文件名。
async function handleDel(name, options) {
  try {
    await client.delete(name);
  } catch (error) {
    error.failObjectName = name;
    return error;
  }
}

// 删除多个文件。
async function deletePrefix(prefix) {
  const list = await client.list({
    prefix: prefix,
  });

  list.objects = list.objects || [];
  const result = await Promise.all(list.objects.map((v) => handleDel(v.name)));
  console.log(result);
}
// 删除目录及目录下的所有文件。
deletePrefix('log/')

  </script>
</body>

</html>

相关文档

  • 关于创建目录的API接口说明,请参见PutObject
  • 关于删除目录及目录下所有文件的API接口说明,请参见DeleteObject