Carrierwave将文件编码为base64作为进程

时间:2013-12-29 15:21:58

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

我正在努力解决这个问题。我想将文件编码为base64作为其中一个过程。

到目前为止我的代码看起来像

class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick
  include CarrierWave::MimeTypes

  storage :file

  def extension_white_list
    %w(jpg jpeg png)
  end

  def store_dir
    "/tmp/images/#{model.class.to_s.underscore}/#{model.id}"
  end

  process :set_content_type
  process :format_to_jpg
  process :strip_metadata
  process :encode_base64

  def format_to_jpg
    manipulate! do |img|
      img.format 'jpg'
      img
    end
  end

  def strip_metadata
    manipulate! do |img|
      img.strip
      img
    end
  end

  def encode_base64
    #What should be here?
  end
end

我不确定我应该在encode_base64方法中放置什么。编码方法是Base64.encode64()作为参数应该发送文件内容(可能是self.read)。但我不确定如何遵循Carrierwave的最佳实践。

1 个答案:

答案 0 :(得分:2)

发现我不需要做任何特别的事情。

def encode_base64
  File.write(path,Base64.encode64(File.read(path)))
end

魔术