从S3下载Carrierwave上传

时间:2013-01-06 05:18:33

标签: ruby-on-rails ruby amazon-s3 download carrierwave

我想下载使用carrierwave上传到S3的图片。图像位于卡型号上,作为上传器安装。我看到this answer,但无法使该解决方案起作用。我的代码是:

#download image from S3
uploader = card.image       #image is the mounted uploader
uploader.retrieve_from_store!(File.basename(card.image.url))
uploader.cache_stored_file!

最后一行抛出:“...导致异常(未定义的方法`body'为nil:NilClass)......”

我的carrierwave配置如下:

#config/initializers/carrierwave.rb
CarrierWave.configure do |config|
  config.storage = :fog
  config.cache_dir = "#{Rails.root}/tmp/upload"
  ...
end

2 个答案:

答案 0 :(得分:3)

谢谢apneadiving。它很简单:

image = MiniMagick::Image::open(card.image.to_s)
image.write(somepath)

答案 1 :(得分:1)

我在Rails 5中尝试过从AWS S3下载文件。

def download
  image = card.image

  # validate existing image from AWS S3
  if image.try(:file).exists?
    data = open(image.url)
    send_data data.read, type: data.content_type, x_sendfile: true
  end

end

我希望能帮助大家。