如何使用Ruby中的Fog列出S3文件夹中的所有文件

Ger*_*haw 23 ruby amazon-s3 fog

如何使用Fog列出特定S3"目录"中的所有文件?

我知道S3不会将文件存储在文件夹中,但我需要一种方法将返回的文件限制为特定的"文件夹",而不是检索存储桶中的整个列表.

Ger*_*haw 40

使用prefixdirectory.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
Run Code Online (Sandbox Code Playgroud)

  • 这里有一个边缘案例,调用`.map`不会返回ALL,而只返回AWS api返回的单个页面.在文件上调用.each会让Fog管理内存消耗,因为可能有很多文件. (2认同)