我正在尝试使用ruby从 url 中读取图像,然后将其保存到Tempfile
以便稍后处理。
require 'open-uri'
url = 'http://upload.wikimedia.org/wikipedia/commons/8/89/Robie_House.jpg'
file = Tempfile.new(['temp','.jpg'])
stringIo = open(url)
# this is part I am confused about how to save StringIO to temp file?
file.write stringIo
这不起作用,导致temp.jpg
无效图片。不知道如何继续这个。
由于
答案 0 :(得分:33)
你非常接近:
file.binmode
file.write stringIo.read
open(url)
正在打开阅读流。在您调用.read
之后,它实际上不会读取数据(然后您可以将其传入file.write
)。
答案 1 :(得分:4)
您还可以使用正确的编码创建临时文件,如下所示:
file = Tempfile.new(['temp','。jpg'] ,: encoding =>'ascii-8bit')
这与将文件设置为binmode相同。