Вы можете просто перебрать 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']
Очевидно, они вымышленные, поскольку у меня нет доступа к вашему ведру, но взгляните на ObjectCollection
и Tree
, чтобы узнать о других методах в AWSSDK.
Существует довольно много доступных методов обхода корзины, например Tree
отвечает на children
, в котором будут перечислены как LeafNode
s (файл), так и BranchNode
s (каталог). BranchNode
s тогда также ответит на children
, так что вы можете сделать это рекурсивным, если необходимо.
Чтобы получить suffix
(например, просто имя файла), вы могли бы исправить их.
class LeafNode
def suffix
@member.key.split(delimiter).pop
end
end
class S3Object
def suffix
@key.split("/").pop
end
end
Я не тестировал их полностью, но они должны работать для возврата только самого имени файла, если он вложен в ветку.
person
engineersmnky
schedule
30.04.2014