通过Paperclip上传base64

时间:2017-01-09 10:23:31

标签: ruby-on-rails base64 paperclip-validation

Paperclip用于图片上传。以base64格式上传的图片如下:

class Photo < ActiveRecord::Base

  before_save :set_image
  attr_accessor :picture_data

  has_attached_file :image
  validates_attachment_content_type :image, :content_type => %w(image/jpeg image/jpg image/png)

  def set_image
    unless self.picture_data.nil?
      data = StringIO.new(Base64.decode64(self.picture_data))
      self.image = data
      self.picture_data = nil
    end
  end

end

Paperclip正确识别传递的base64的content_type,但没有发生content_type验证。它保存文件的任何内容。

有谁可以帮我解决这个问题?!

1 个答案:

答案 0 :(得分:0)

您需要使用before_validation回调代替before_save