【问题标题】:Store different versions of images into different locations with Carrierwave使用 Carrierwave 将不同版本的图像存储到不同的位置
【发布时间】:2014-03-28 04:08:29
【问题描述】:

我想知道是否可以将不同的图像版本存储到不同的位置。

假设我有一些像这样定义的私有 Carrierwave 文件夹:

def store_dir
    "#{Rails.root}/private/uploads/"
end

还有几个版本的上传图片:

version :medium do
    process :resize_to_limit => [400, 400]
end

version :large do
    process :resize_to_limit => [800, 800]
  end

version :thumb do
    process :resize_to_limit => [200, 200]
end

我想在定义的store_path 中存储上传的图像、中等版本和大版本图像,但希望用户可以使用拇指版本存储在公共文件夹中,例如在默认公共文件夹中:

def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

我怎样才能做到这一点?谢谢!

【问题讨论】:

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


    【解决方案1】:

    您只需要在version 块内覆盖store_dir。所以对于你的例子,

    version :medium do
      process :resize_to_limit => [400, 400]
    end
    
    version :large do
      process :resize_to_limit => [800, 800]
    end
    
    version :thumb do
      process :resize_to_limit => [200, 200]
    
      def store_dir
        "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
      end
    end
    

    【讨论】:

      【解决方案2】:

      在旧版本的carrierwave中我使用了version_name,我不确定它现在是否有效

      def store_dir
        if version_name != 'thumb'
          # path for other versions
        else
          # path for thumb version
        end
      end
      

      【讨论】:

        猜你喜欢
        • 2013-11-17
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 2011-07-05
        • 1970-01-01
        • 2016-03-16
        • 1970-01-01
        • 2022-01-03
        相关资源
        最近更新 更多