【问题标题】:Carrierwave uploads image locally, not to S3Carrierwave 将图像上传到本地,而不是 S3
【发布时间】:2013-12-19 14:46:29
【问题描述】:

我已将 Carrierwave+Fog 配置为与 Amazon S3 一起使用。我遇到的问题是所有内容都是在我的项目的公共文件夹中创建的,并且没有上传到 S3。拇指和目录都可以,只是图片的位置不起作用。

我的上传者:

    class ImageUploader < CarrierWave::Uploader::Base
    include CarrierWave::MiniMagick
    storage :fog
    def store_dir
      "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end
    version :thumb do
      process :resize_to_fit => [200, 200]
    end
    def extension_white_list
     %w(jpg jpeg gif png)
    end
end

雾.rb

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider => 'AWS',
    :aws_access_key_id => 'xxx',
    :aws_secret_access_key => 'yyy',
    :region => 'eu-west-1'
  }

  config.fog_directory = 'your_bucket_here'
  config.fog_public = true
  config.fog_attributes = {'Cache-Control' => 'max-age=315576000'} 
end

使用它的类:

class Image < ActiveRecord::Base
  belongs_to :product
  mount_uploader :remote_file, ImageUploader
end

以及控制器代码:

    i = Image.new
    i.save
    i.remote_file = params[:image]

    render :json => {:response => i.remote_file.url}

响应是: {"response":"/uploads/tmp/1387464252-27678-6793/logo11w.png"}

并且图像是在 rails 项目的公共目录中创建的。

谢谢!

【问题讨论】:

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


    【解决方案1】:

    CarrierWave 使用ActiveRecord before_save and after_save callbacks 执行上传。在您的控制器中,在调用save 之前设置remote_file:

    i = Image.new
    i.remote_file = params[:image]
    i.save
    

    【讨论】:

      猜你喜欢
      • 2014-05-30
      • 1970-01-01
      • 2016-04-15
      • 2012-07-08
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      相关资源
      最近更新 更多