Как мне с помощью Fog перечислить все файлы в определенном «каталоге» S3?
Я знаю, что S3 не хранит файлы в папках, но мне нужен способ ограничить возвращаемые файлы определенной «папкой» вместо получения всего списка в корзине.
Как мне с помощью Fog перечислить все файлы в определенном «каталоге» S3?
Я знаю, что S3 не хранит файлы в папках, но мне нужен способ ограничить возвращаемые файлы определенной «папкой» вместо получения всего списка в корзине.
Используйте параметр prefix
в методе directory.get. Пример:
def get_files(path, options)
connection = Fog::Storage.new(
provider: 'AWS',
aws_access_key_id: options[:key],
aws_secret_access_key: options[:secret]
)
connection.directories.get(options[:bucket], prefix: path).files.map do |file|
file.key
end
end
prefix
- это на самом деле суффикс, по крайней мере, структурно. Если путь к вашей вложенной корзине - 'foo / bar', тогда вызов вашего метода будет: .get('foo', prefix: 'bar')
.
- person pdoherty926; 17.07.2015
.map
вернет не ВСЕ, а только одну страницу, возвращенную API AWS. Вызов .each для файлов позволит Fog управлять потреблением памяти, поскольку файлов может быть МНОГО.
- person rposborne; 14.06.2016
/
в пути prefix
- это возвращает кажущийся пустой каталог.
- person Ollie Bennett; 02.01.2019