2014-02-13 31 views
8

如何將來自FileReader API結果的數據URI轉換爲可以保存在Ruby文件系統中的圖像文件?如何將數據URI轉換爲Ruby中的文件

什麼我正在試圖做的是使用Base64解碼的data_uri字符串看起來像這樣轉換:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgA...成base 64編碼字符串,因爲根據該stackoverflow answer我需要的空間所有的情況下更換成+。答案是PHP,但我目前正在對Ruby和Sinatra的,所以我不知道這是否仍然適用,但使用等效代碼時:

src = data_uri.gsub! ' ', '+' 
src = Base64.decode64(src) 
f = File.new('uploads/' + 'sample.png', "w") 
f.write(src) 
f.close 

我得到以下錯誤:

undefined method `unpack' for nil:NilClass 

我想在這裏實現的是能夠將數據URI轉換爲文件。

回答

12

沒有必要重新發明輪子。使用data_uri寶石。

require 'data_uri' 

uri = URI::Data.new('data:image/gif;base64,...') 
File.write('uploads/file.jpg', uri.data) 
+0

我正在使用RMagick和圖像blob,'data_uri' gem爲我工作。謝謝 – yeyo

相關問題