20
如何使用Fog列出特定S3「目錄」中的所有文件?如何使用Ruby中的Fog列出S3文件夾中的所有文件
我知道S3不會將文件存儲在文件夾中,但我需要一種方法將返回的文件限制爲特定的「文件夾」,而不是檢索存儲桶中的整個列表。
如何使用Fog列出特定S3「目錄」中的所有文件?如何使用Ruby中的Fog列出S3文件夾中的所有文件
我知道S3不會將文件存儲在文件夾中,但我需要一種方法將返回的文件限制爲特定的「文件夾」,而不是檢索存儲桶中的整個列表。
在directory.get方法中使用prefix
選項。例如:
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
可能值得注意的是'前綴'是_actually_後綴,至少在結構上來說。如果嵌套桶的路徑是'foo/bar',那麼你的方法調用將是:'.get('foo',前綴:'bar')'。 – pdoherty926 2015-07-17 02:19:09
如果您不認爲存儲桶名稱是路徑的一部分,pdoherty926的註釋有點令人困惑。 – Amir 2016-04-25 14:21:38
這裏有一個邊界情況,調用'.map'將不會返回ALL,而只會返回AWS api返回的單個頁面。調用每個文件都會讓Fog管理內存消耗,因爲可能有很多文件。 – rposborne 2016-06-14 19:14:30