carrierwave可以直接上传到本地存储吗?

时间:2017-06-22 20:35:51

标签: ruby-on-rails carrierwave carrierwave-direct

有时我远离互联网,仍然需要处理上传页面。 Carrierwave Direct似乎强制存储:雾;在开发中没有压倒一切的方式 是否有可能告诉Carrierwave Direct使用本地存储(:文件)并简单地回退到Carrierwave的开发配置设置?

设置存储:在开发配置设置下的carrierwave初始化程序中的文件不起作用..."的carrierwave_direct错误不是公认的提供商"来自"<%= direct_upload_form_for @uploader do | f | %GT;"

我试图直接解决carrierwave,但强迫:雾,期待重定向网址并期望使用direct_upload_form_for表单方法... carrierwave_direct非常负责。

使用存储:开发中的文件将是carrierwave_direct gem的一个受欢迎的功能。有谁知道如何干净利落地做到这一点?

1 个答案:

答案 0 :(得分:1)

我认为可以按照以下方式完成:

CarrierWave.configure do |config|
  if Rails.env.development? || Rails.env.test?
    config.storage = :file
    config.asset_host = ENV["dev_url"]
  else
    config.fog_provider = 'fog/aws'                        # required
    config.fog_credentials = {
      provider:              'AWS',                        # required
      aws_access_key_id:     ENV["aws_id"],                        # required
      aws_secret_access_key: ENV["aws_key"],                        # required
      region:                ENV["aws_zone"]                  # optional, defaults to 'us-east-1'
    }
    config.fog_directory  = ENV["aws_bucket"]                          # required
    config.max_file_size  = 600.megabytes # defaults to 5.megabytes
    config.use_action_status = true
    config.fog_public     = false                                        # optional, defaults to true
    config.fog_attributes = { cache_control: "public, max-age=#{365.day.to_i}" } # optional, defaults to {}
  end

end

在您的上传器中添加:

class SomeUploader < CarrierWave::Uploader::Base
  if Rails.env.development? || Rails.env.test?
    def store_dir
     "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end
  end
end