gpt4 book ai didi

javascript - S3 listObjects递归 Node

转载 作者:行者123 更新时间:2023-12-04 14:54:55 25 4
gpt4 key购买 nike

我想递归地获取 S3 存储桶文件夹中的所有文件。
我想实现与 ls -R 相同的行为Linux 中的命令。
这是一个插图

my_folder
|_abc
| |_abc_file.txt
| |_xyz
| |_xyz_file.txt
|
|_file.txt
考虑到上面的目录结构。如果我做
 const data = await s3.listObjectsV2({
Prefix: 'my_folder/',
Bucket: bucket,
Delimiter: `/`,
}).promise();
目前,我得到以下 data :
-CommonPrefixes: ["abc"]
-Contents:["file.txt"]
预期的行为是:
- Contents: ["abc/abc_file.txt", "abc/xyz/xyz_file.txt", "file.txt"]
我尝试使用 ES6 生成器函数 递归函数 解决这个问题并最终得到很多困惑的代码。
我正在使用 S3 Node SDK

最佳答案

Amazon S3 是一个不使用目录的平面对象存储系统。相反,对象的键(文件名)包括对象的完整路径。目录会根据现有对象的路径神奇地“出现”,然后当该路径中没有对象时会消失。
一个 CommonPrefix是显示子目录的 Amazon S3 等效项。
调用ListObjects()时与 Delimiter参数(例如 Delimiter='/' ),在 CommonPrefixes 中返回子目录列表 field 。这允许像传统存储系统一样通过目录进行递归。如果删除此参数,将返回具有给定前缀的所有对象,而不仅仅是“当前目录”。

关于javascript - S3 listObjects递归 Node ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68242916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com