我目前在 Ruby 脚本中使用 Net::HTTP
通过多部分表单发布将文件发布到网站。它适用于小文件,但我经常不得不使用此脚本发送非常大的文件,而且 HTTP#post
似乎只接受作为 String
对象的发布数据,这意味着我发送的文件必须先读入内存才能发送任何内容。此脚本在繁忙的生产服务器上运行,因此仅仅为了发送一个文件就占用数百兆字节的 RAM 是 Not Acceptable 。
理想情况下,应该有一种方法可以指定缓冲区大小和 IO
对象,并发送缓冲区大小的数据 block ,从 IO
中读取code> object 仅根据需要。实现这一目标的最佳方式是什么?我是否遗漏了 Net::HTTP
中的相关内容?
更新:Net::HTTP#body_stream(input)
看起来不错,尽管文档相当……稀疏。任何人都可以给我指出一个很好的例子吗?
最佳答案
实际上,我设法使用 body_stream 上传了一个文件。完整的源代码在这里: http://stanislavvitvitskiy.blogspot.com/2008/12/multipart-post-in-ruby.html
关于ruby - Ruby 中的缓冲多部分表单帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/213613/