如何使用Ruby on Rails检查我的s3存储桶中是否存在某个文件夹?
我正在使用AWS:S3官方宝石 初始化全局连接后
AWS::S3::Base.establish_connection!(:access_key_id => 'my_key_id', :secret_access_key => ‘my_secret’)
我的名字为:myfirstbucket
将文件夹命名为:my_folder
my_folder中的文件名为:my_pic.jpg
当我尝试检查my_pic.jpg
是否存在时,它可以正常工作
s3object.exists? “/my_folder/my_pic.jpg” , “myfirstbucket”
=> True
如何检查文件夹是否存在?
s3object = AWS::S3::S3Object
s3object.exists? “/my_folder/” , “myfirstbucket”
=> False
答案 0 :(得分:4)
使用Bucket#objects
:
bucket.objects({prefix: 'my/folder/'}).limit(1).any?
返回
Collection
个ObjectSummary
个资源。没有API请求 直到你在集合上调用一个可枚举的方法。Client#list_objects
将被多次调用,直到每次ObjectSummary
已经屈服了。- http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Bucket.html#objects-instance_method
答案 1 :(得分:3)
你必须检查
例如: 你有文件" my_file"在文件夹" my_folder"。
my_folder/my_file。所以你必须检查两次
my_folder/
请参阅文档:http://docs.aws.amazon.com/AmazonS3/latest/UG/FolderOperations.html
答案 2 :(得分:1)
你可以从你的桶里做一棵树。
http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/Tree.html
tree = bucket.as_tree
tree.children.select(&:branch?).collect(&:prefix).include?(“/my_folder/”)