如何获取 S3 存储桶中根目录内的主要文件夹列表?亚马逊S3

Raj*_*Raj 1 javascript amazon-s3 amazon-web-services node.js

我有一个 S3 存储桶,其中包含包含文件的文件夹和子文件夹,我试图列出根目录中的所有文件夹名称。我不想列出子文件夹和文件。

ex:
Test/Test1
Test/Test2
Test/Test3
Test/Test4
etc...
Run Code Online (Sandbox Code Playgroud)

我尝试过以下代码,其中列出了根目录中的所有键

getListAllKeys(rootDirectory) {
    const containedEntities = {
      files: [],
      directories: []
    };
    const params = {
      Bucket: this.bucket,
      Prefix: Test/,
      Delimiter: Test/
    };

    return new Promise((resolve, reject) => this._listAllKeys(
      resolve,
      reject,
      params,
      containedEntities
    ));
  }

  
  _listAllKeys(resolve, reject, params, containedEntities) {
    this.s3.listObjectsV2(params).promise()
      .then(({
        Contents, IsTruncated, NextContinuationToken,
      }) => {                   
        // filter files and directories
        Contents.forEach((item) => {
          containedEntities[item.Key.endsWith('/') ? 'directories' : 'files'].push(item);
        });
        // fetch further info if response is truncated
        if (IsTruncated) {
          this._listAllKeys(
            resolve,
            reject,
            Object.assign(params, { ContinuationToken: NextContinuationToken }),
            containedEntities
          );
        } else {
          resolve(containedEntities);
        }
      })
      .catch(reject);
  }
Run Code Online (Sandbox Code Playgroud)

我正在使用 AWS-SDK 包。请让我知道如何仅列出主文件夹

Joh*_*ein 7

要获取目录列表,请指定Delimiter='/'(不指定前缀)。

顶级(根)级别的目录列表将在名为 的列表中返回CommonPrefixes

通过指定前缀,它也适用于子文件夹。