我想从位于特定网址的图片创建文件对象。我正在使用Net Http下载文件:
img = Net::HTTP.get_response(URI.parse('https://prium-solutions.com/wp-content/uploads/2016/11/rails-1.png'))
file = File.read(img.body)
但是,在尝试读取文件并将其存储到ArgumentError: string contains null byte
变量时,我得到file
。
如何在不必在本地存储的情况下执行此操作?
答案 0 :(得分:2)
由于File
处理从存储中读取的内容,因此此处并不适用。 read
方法希望您将其提交给一个位置进行读取,并且您传递二进制数据。
如果您需要与需要流式传输对象的库进行交互,您可以将字符串体包装在StringIO对象中:
file = StringIO.new(img)
# you can now call file.read, file.seek, file.rewind, etc.