Ruby 中的缓冲多部分表单帖子



我目前正在Ruby脚本中使用Net::HTTP通过多部分表单帖子将文件发布到网站。 它适用于小文件,但我经常必须使用此脚本发送非常大的文件,HTTP#post似乎只接受 post 数据作为String对象,这意味着我发送的文件必须先读入内存才能发送任何内容。 此脚本在繁忙的生产服务器上运行,因此仅为了发送文件而吞噬数百兆字节的 RAM 是不可接受的。

理想情况下,有一种方法可以赋予缓冲区大小和IO对象,并发送缓冲区大小的数据块,仅根据需要从IO对象读取。 实现这一目标的最佳方法是什么? 我错过了Net::HTTP相关内容吗?

更新Net::HTTP#body_stream(input)看起来不错,尽管文档相当...稀疏。 有人能指出我一个很好的例子吗?

实际上,我设法使用body_stream上传了一个文件。完整的源代码在这里:http://stanislavvitvitskiy.blogspot.com/2008/12/multipart-post-in-ruby.html

Use Net::HTTP#body_stream(input)

没有流式传输的多部分帖子示例:

最新更新