【问题标题】:Carrierwave backgrounder and unique filenamesCarrierwave 背景和独特的文件名
【发布时间】:2013-09-14 09:29:28
【问题描述】:

我正在使用 Carrierwave 上传一些图像并生成它们的不同版本(大小、颜色...)。每张图片在上传时都有一个唯一的名称,我现在正尝试在后台处理图片以避免阻塞 Web 进程。我为此使用carrierwave_backgrounder

问题是当我的图像被处理时,它被赋予了一个新名称。所以模型不知道这个新名称,原始图像现在在服务器上出现了两次。

我最终得到了这种文件:

f9f97657-eaab-40ce-b965-31bb128066ee.jpg // First uploaded images
e4244551-7f43-4c03-8747-e8f2f2e57156.jpg // Copy of the original image created while processed in the background
thumb_e4244551-7f43-4c03-8747-e8f2f2e57156.jpg

event.image 返回f9f97657-eaab-40ce-b965-31bb128066ee.jpg

如果我们只是在后台处理不同的版本而不上传,如何避免生成新的文件名?

我的模特:

class Event < ActiveRecord::Base

  mount_uploader :cover_image, CoverImageUploader
  process_in_background :cover_image

end

我的上传者:

class CoverImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  include CarrierWave::MimeTypes
  include Sprockets::Helpers::RailsHelper
  include Sprockets::Helpers::IsolatedHelper

  include ::CarrierWave::Backgrounder::Delay

  def filename
    "#{secure_token}.#{file.extension}" if original_filename
  end

  process :set_content_type

  version :thumb do
    process resize_to_fill: [200, 200]
  end

  # ...
  # Some other versions processing...
  # ...

  protected

  def secure_token
    var = :"@#{mounted_as}_secure_token"
    model.instance_variable_get(var) || model.instance_variable_set(var, SecureRandom.uuid)
  end
end

【问题讨论】:

    标签: ruby-on-rails carrierwave


    【解决方案1】:

    可以试试这个:

    def filename
        if original_filename.present?
            if model.respond_to?("#{mounted_as}_processing") && model.send("#{mounted_as}_processing") 
                @name ||= model.send("#{mounted_as}_identifier")
            else
                @name ||= "#{secure_token}.#{file.extension}"
            end
        end
    end
    

    仅当您的表中有“处理”列时才有效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多