2015-10-07 78 views
0

使用cropit我通过参数获得了在导轨上的图像bas64编码。用回形针上传base64编码图像 - 导轨

image = params['image'].gsub('data:image/jpeg;base64,', '') 
    decoded_file = Base64.decode64(image) 

,然后我保存到Amazon S3与回形针

begin 
    file = Tempfile.new(['image', '.jpg']) 
    file.binmode 
    file.write decoded_file 
    unless params['image_id'] 
     media_img = Media::Image.new() 
     media_img.image = file 
     if media_img.save 
     render json: {status: 'success'} 
     else 
     render json: {status: 'error'} 
     end 
    else 
     img = Media::Image.find(params['image_id']) 
     img.update_attribute(:image, file) 
     img.update_attribute(:name, params['image_name']) 
     render json: {status: 'success'} 
    end 
    file.close 
    ensure 
    file.unlink 
    end 

的主要问题是,代码只为JPEG图像,因为我使用GSUB只为data:image/jpeg;base64,工作和创建我创造了它视为档案时jpg Tempfile.new(['image', '.jpg'])。那么,如何处理最佳实践jpg,jpeg和png?

回答

0

这是我的解决方案,使用Paperclip.io_adapters.for(image),其中图像是base64字符串。

def create_image image, image_name, cat 
    signature = Paperclip.io_adapters.for(image) 
    base_name = File.basename(image_name,File.extname(image_name)) 
    signature.original_filename = "#{base_name}.jpg" 
    media_img = Media::Image.new() 
    media_img.image = signature 
    media_img.company_id = current_company_id 
    media_img.type = cat 
    media_img.save 
end