gpt4 book ai didi

ruby - 使用 aws-sdk gem 列出 s3 中的所有文件

转载 作者:数据小太阳 更新时间:2023-10-29 07:52:46 32 4
gpt4 key购买 nike

我有以下场景。在我的例子中考虑 aws s3 文件夹结构如下

- videos
- my_videos
- college

我已经在 college 上传了视频文件 myfirst_day.mp4,因为这个相关的形成键是 "videos/my_videos/college/myfirst_day.mp4"

现在我必须列出 videos/my_videos/college 目录中的所有文件。我该怎么做。

为此,我正在使用 aws-sdk gem

最佳答案

您可以简单地遍历 bucket objects 并使用 with_prefix 方法

s3.buckets[YOUR BUCKET NAME].objects.with_prefix('videos/my_videos/college').each.collect(&:key)
#=> ["videos/my_videos/college/myfirst_day.mp4"]

或者使用as_tree方法

s3.buckets[YOUR BUCKET NAME].as_tree(prefix:'videos/my_videos/college').select(&:leaf?).collect(&:key)
#=> ['videos/my_videos/college/myfirst_day.mp4']

显然这些都是虚构的,因为我无法访问您的存储桶,但请查看 ObjectCollectionTree 以了解 AWSSDK 中的更多方法。 .

桶遍历有很多方法可用,例如 Tree 响应 children 将列出 LeafNode(文件)和BranchNode(目录)。 BranchNode 也会响应 children,因此您可以根据需要进行递归。

要获取后缀(例如,只是文件名),您可以将它们打补丁。

class LeafNode
def suffix
@member.key.split(delimiter).pop
end
end
class S3Object
def suffix
@key.split("/").pop
end
end

我还没有以任何方式对它们进行全面测试,但如果它嵌套在分支中,它们应该只返回文件名本身。

关于ruby - 使用 aws-sdk gem 列出 s3 中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23383103/

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