2015-12-21 44 views
1

我想通過我的Rails應用程序中的Paperclip保存base64圖像。如何使用回形針正確保存base64圖像

以下是我在我的控制器:

@user = current_user 
    @user.image_data = "data:image/jpg;base64,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" 

    @user.save! 

    StringIO.open(Base64.decode64(@user.image_data)) do |data| 
     data.class.class_eval { attr_accessor :original_filename, :content_type } 
     data.original_filename = "file.jpg" 
     data.content_type = "image/jpeg" 
     @user.image = data 
    end 

    @user.save! 

以下是我在我的用戶模型:

has_attached_file :image, styles: { 
    square: '300x300>' 
    } 

    validates_attachment :image, content_type: { content_type: ["image/jpeg", "image/jpg"] }, size: { in: 0..10.megabytes } 

我不斷收到此錯誤:Validation failed: Image content type is invalid, Image is invalid

怎麼辦我得到這個工作?我如何正確保存base64圖像?

回答

0

你需要底座64僅解碼該被編碼爲基礎64.

"data:image/jpg;base64,iVBORw0KGgo..."那部分,從iVB...部分是底座64的編碼圖像。

i = @user.image_data 
image_data = i[i.index("base64,") + "base64,".size, i.size] 
#=> iVBOR.... 
image = Base64.decode64(image_data) 

StringIO.open(image) do |data| 
    ... 
end 
... 
+0

我該在哪裏做? –

+0

我是不是已經解碼了? –

+0

添加代碼段,應該已經很明顯了 –

相關問題