24

我正在尝试使用 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图像无效。不知道如何进行。

谢谢

4

2 回答 2

40

你非常接近:

file.binmode
file.write stringIo.read

open(url)只是打开流进行阅读。在您调用它之前,它实际上不会读取数据.read(然后您可以将其传递给file.write)。

于 2013-08-13T18:13:21.007 回答
4

您还可以使用正确的编码创建临时文件,如下所示:

文件 = Tempfile.new(['temp','.jpg'], :encoding => 'ascii-8bit')

这与将文件设置为 binmode 相同。

于 2014-04-20T10:09:18.313 回答