【问题标题】:CarrierWave Uploader URL Points to the Local Filesystem When Using the Cloud使用云时,CarrierWave Uploader URL 指向本地文件系统
【发布时间】:2011-11-01 17:54:48
【问题描述】:

我在我的 Rails 应用程序中使用 Carrierwave 来处理图片上传。当我将上传器配置为在本地存储文件时,一切正常。当我要求上传到 Rackspace 的云文件服务时,问题就来了。上传效果很好,我可以在控制面板中看到文件。问题是 Carrierwave 在上传器上返回一个 URL,就好像文件存储在本地一样。即:@foo.uploader.url 看起来像 /User/bar/Code/app/public/uploads/yeah.jpeg 而不是 http://cloudcloud.com/yeah.jpg

我哪里出错了?

# config/initializers/carrier_wave.rb

CarrierWave.configure do |config|
  config.storage = :fog

  config.fog_credentials = {
    :provider           => 'Rackspace',
    :rackspace_username => 'foo',
    :rackspace_api_key  => '0f0f0f0f0f0f0f'
  }

  config.fog_directory = 'development-images'
end

# app/uploaders/foo_uploader.rb

class FooUploader < CarrierWave::Uploader::Base
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end

【问题讨论】:

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


    【解决方案1】:

    我查看了我自己的 Rackspace 上传器代码,我能看到的唯一区别是我将 fog_host 设置为 CDN url,如下所示:

    config.fog_host = "http:/something.rackcdn.com"
    

    【讨论】:

    • 完美!谢谢!我没有意识到您必须打开 Rackspace 的 CDN 才能让您的文件可以公开访问。 CarrierWave 的文档说此选项不是必需的,但强烈建议使用。
    猜你喜欢
    • 2013-08-15
    • 2018-11-02
    • 2017-02-12
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 2011-11-29
    相关资源
    最近更新 更多