如何在Ruby中将数据URI转换为文件

11
如何将来自FileReader API的数据URI转换为可以在Ruby文件系统中保存的图像文件?目前我正在尝试使用Base64解码将data_uri字符串(例如data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgA...)转换为Base64编码字符串,因为根据这个stackoverflow答案,我需要将所有空格的实例替换为+。虽然该答案是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转换为文件。

1个回答

14

没必要重复造轮子,可以使用data_uri gem。

require 'data_uri'

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

我正在使用 RMagick 和图像 blob 进行工作,data_uri gem 对我有用。谢谢。 - yeyo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接