【发布时间】:2008-10-17 19:53:23
【问题描述】:
我目前在 Ruby 脚本中使用 Net::HTTP 通过多部分表单发布将文件发布到网站。它适用于小文件,但我经常不得不使用这个脚本发送非常大的文件,HTTP#post 似乎只接受作为String 对象的发布数据,这意味着我发送的文件必须被读取在发送任何内容之前进入内存。该脚本在繁忙的生产服务器上运行,因此仅仅为了发送文件就占用数百兆的 RAM 是不可接受的。
理想情况下,应该有一种方法可以指定缓冲区大小和IO 对象,并发送缓冲区大小的数据块,仅在需要时从IO 对象读取。实现这一目标的最佳方法是什么?我错过了Net::HTTP 中的相关内容吗?
更新:Net::HTTP#body_stream(input) 看起来不错,尽管文档相当...稀疏。谁能给我指出一个很好的例子?
【问题讨论】:
标签: ruby http forms networking multipartform-data