6

这会导致 Ruby 出现内存问题吗?如果大小超过 10KB,我知道 Open-URI 会写入 TempFile。但是 HTTParty 会在写入 TempFile 之前尝试将整个 PDF 保存到内存中吗?

src = Tempfile.new("file.pdf")
src.binmode
src.write HTTParty.get("large_file.pdf").parsed_response
4

1 回答 1

12

您可以使用 Net::HTTP。请参阅文档(特别是标题为“流式响应机构”的部分)。

这是文档中的示例:

uri = URI('http://example.com/large_file')

Net::HTTP.start(uri.host, uri.port) do |http|
  request = Net::HTTP::Get.new uri.request_uri

  http.request request do |response|
    open 'large_file', 'w' do |io|
      response.read_body do |chunk|
        io.write chunk
      end
    end
  end
end
于 2012-02-16T02:03:04.003 回答