雾 - 在S3中获取对象的大小

时间:2013-04-04 21:42:49

标签: ruby-on-rails ruby amazon-s3 fog

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

例如:

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

要求我先下载对象。

如何在下载之前找出尺寸?

3 个答案:

答案 0 :(得分:2)

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

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

在回来的对象中查找:

Content-Length

这也将为您提供其他好的信息,例如ETag中的校验和以及其他类似的东西。

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

答案 1 :(得分: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

答案 2 :(得分:0)

.setPositiveStyle( (figure) => figure
                    .setStrokeStyle( (stroke) => stroke.setThickness(2) )
                   )
  .setNegativeStyle( (figure) => figure
                    .setStrokeStyle( (stroke) => stroke.setThickness(2) )
                   )
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