【问题标题】:Write StringIO to Tempfile将 StringIO 写入 Tempfile
【发布时间】:2013-08-15 11:42:42
【问题描述】:

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

谢谢

【问题讨论】:

    标签: ruby io


    【解决方案1】:

    你非常接近:

    file.binmode
    file.write stringIo.read
    

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

    【讨论】:

    • 谢谢你,超级亲密,呵呵,喜欢。我也错过了file.binmode,以防有人遇到类似问题。
    • thnx for the file.binmode!!
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 2015-03-19
      • 2018-11-30
      • 1970-01-01
      • 2016-03-20
      • 2016-06-15
      • 2011-03-16
      相关资源
      最近更新 更多