TIPS > メモリを抑えたHTTP Post

概要

  • HTTPのPost/Putメソッドで巨大なデータを送ろうとする時、すべてのデータを保持しようとすると大量のメモリが必要になります。
  • そんな時は、HTTPRequest::body_stream=を使ってリクエストボディにストリームを指定しましょう。

  • こんな風に使ってみた。
- コード
uri = URI.parse(uristr)
  Net::HTTP.version_1_2
  http = Net::HTTP.new(uri.host, uri.port)
  res = http.start{|http|
    req = Net::HTTP::Post.new(uri.path, header)
    File.open(ARGV[0], "rb"){|file|
      req.body_stream = file
      req["Content-Length"] = File.size(file.path)
      http.request(req).body
    }
  }
 

参照サイト


最終更新:2008年07月13日 11:16