Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 将base64映像与Carrierwave一起使用_Ruby On Rails 3_Base64_Carrierwave - Fatal编程技术网

Ruby on rails 3 将base64映像与Carrierwave一起使用

Ruby on rails 3 将base64映像与Carrierwave一起使用,ruby-on-rails-3,base64,carrierwave,Ruby On Rails 3,Base64,Carrierwave,我想用Carrierwave来完成类似的事情。 有人能解释一下我在Carrierwave中使用base64图像吗?类ImageUploader

我想用Carrierwave来完成类似的事情。 有人能解释一下我在Carrierwave中使用base64图像吗?

类ImageUploaderclass ImageUploader < CarrierWave::Uploader::Base

  class FilelessIO < StringIO
    attr_accessor :original_filename
    attr_accessor :content_type
  end

  before :cache, :convert_base64

  def convert_base64(file)
    if file.respond_to?(:original_filename) &&
        file.original_filename.match(/^base64:/)
      fname = file.original_filename.gsub(/^base64:/, '')
      ctype = file.content_type
      decoded = Base64.decode64(file.read)
      file.file.tempfile.close!
      decoded = FilelessIO.new(decoded)
      decoded.original_filename = fname
      decoded.content_type = ctype
      file.__send__ :file=, decoded
    end
    file
  end
类FilelessIO接受的答案对我不起作用(v0.9)。 这似乎是在缓存回调之前失败的检查

这项实施工作:

class ImageUploader < CarrierWave::Uploader::Base

  # Mimick an UploadedFile.
  class FilelessIO < StringIO
    attr_accessor :original_filename
    attr_accessor :content_type
  end

  # Param must be a hash with to 'base64_contents' and 'filename'.
  def cache!(file)
    if file.respond_to?(:has_key?) && file.has_key?(:base64_contents) && file.has_key?(:filename)
      local_file = FilelessIO.new(Base64.decode64(file[:base64_contents]))
      local_file.original_filename = file[:filename]
      extension = File.extname(file[:filename])[1..-1]
      local_file.content_type = Mime::Type.lookup_by_extension(extension).to_s
      super(local_file)
    else
      super(file)
    end
  end

end
class ImageUploader
如何通过控制器保存文件?你们也有这个的样品吗?