3

如何在不下载雾中获取 s3 对象的大小?

例如:

connection.get_object(dir.key, latest_backup.key).body.size

需要我先下载对象。

如何在下载前找出大小?

4

3 回答 3

3

要查找文件的大小,请执行以下操作:

connection.head_object(bucket_name, object_name, options = {})

并在返回的对象中寻找它:

Content-Length

这还将为您提供其他有用的信息,例如 ETag 中的校验和以及其他类似的信息。

参考:http ://rubydoc.info/gems/fog/Fog/Storage/AWS/Real#head_object-instance_method

于 2013-10-18T02:58:33.877 回答
1

remote_file.content_length对我有用(雾 1.21.0)

remote_file远程目录获取的位置,如下所示:

def connection
  Fog::Storage.new(fog_config)
end

def directory
  connection.directories.get(bucket)
end

def remote_file
  remote_files = directory.files.last
end
于 2014-09-03T21:12:16.723 回答
0
module S3
  def self.directory
    connection.directories.new(key: ENV['AWS_BUCKET'])
  end

  def self.connection
    Fog::Storage.new(
      provider: 'AWS',
      aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
      aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
      region: ENV['AWS_REGION']
    )
  end

  def self.file(key)
    directory.files.head(key)
  end
end

file = S3.file(key)
file.content_length
于 2019-10-28T10:45:38.900 回答