来自URL的文件对象

时间:2017-10-07 15:48:02

标签: ruby-on-rails ruby

我想从位于特定网址的图片创建文件对象。我正在使用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

如何在不必在本地存储的情况下执行此操作?

1 个答案:

答案 0 :(得分:2)

由于File处理从存储中读取的内容,因此此处并不适用。 read方法希望您将其提交给一个位置进行读取,并且您传递二进制数据。

如果您需要与需要流式传输对象的库进行交互,您可以将字符串体包装在StringIO对象中:

file = StringIO.new(img)
# you can now call file.read, file.seek, file.rewind, etc.