如何在不下载雾中获取 s3 对象的大小?
例如:
connection.get_object(dir.key, latest_backup.key).body.size
需要我先下载对象。
如何在下载前找出大小?
如何在不下载雾中获取 s3 对象的大小?
例如:
connection.get_object(dir.key, latest_backup.key).body.size
需要我先下载对象。
如何在下载前找出大小?
要查找文件的大小,请执行以下操作:
connection.head_object(bucket_name, object_name, options = {})
并在返回的对象中寻找它:
Content-Length
这还将为您提供其他有用的信息,例如 ETag 中的校验和以及其他类似的信息。
参考:http ://rubydoc.info/gems/fog/Fog/Storage/AWS/Real#head_object-instance_method
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
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