我有一个包含文件夹和包含文件的子文件夹的S3桶,我试图列出根目录中的所有文件夹名。我不想列出子文件夹和文件。
ex:
Test/Test1
Test/Test2
Test/Test3
Test/Test4
etc...
我尝试了下面的代码,它列出根目录中的所有键
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);
}
我正在使用AWS软件包。请告诉我如何只列出主要文件夹。
发布于 2022-10-12 04:18:02
若要获取目录列表,请指定Delimiter='/'
(没有指定前缀)。
顶部(根)级别的目录列表将在一个名为CommonPrefixes
的列表中返回。
通过指定前缀,它也适用于子文件夹。
https://stackoverflow.com/questions/74041404
复制