1

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

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

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

4

2 回答 2

3

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

于 2008-12-25T15:34:39.433 回答
0

使用 Net::HTTP#body_stream(input)

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

于 2008-10-19T10:06:05.773 回答