use*_*247 3 ruby amazon-s3 amazon-web-services ruby-1.9.3
我有以下情况.在我的情况下考虑aws s3文件夹结构如下
- videos
- my_videos
- college
Run Code Online (Sandbox Code Playgroud)
我已上载的视频文件说myfirst_day.mp4的college,因为这关系形成的关键是"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"]
Run Code Online (Sandbox Code Playgroud)
或使用该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']
Run Code Online (Sandbox Code Playgroud)
显然,这些都是虚构的,因为我有你的水桶没有访问权限,但看一看ObjectCollection,并Tree在更多的方法AWSSDK.
存在很多可用于桶遍历的方法,例如Tree响应children将列出LeafNodes(文件)和BranchNodes(目录).BranchNode然后s也会响应,children所以你可以根据需要进行递归.
为了得到suffix(例如只是文件名)你可以修补它们.
class LeafNode
def suffix
@member.key.split(delimiter).pop
end
end
class S3Object
def suffix
@key.split("/").pop
end
end
Run Code Online (Sandbox Code Playgroud)
我没有以任何方式完全测试这些,但如果它嵌套在分支内,它们应该只返回文件名本身.
| 归档时间: |
|
| 查看次数: |
2981 次 |
| 最近记录: |