2015-10-07 81 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