【问题标题】:Buffered Multipart Form Posts in RubyRuby 中的缓冲多部分表单帖子
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 我最终只是挖掘了 Net/HTTP 源代码来弄清楚如何使用 body_stream,这是一个正确的痛苦。我对我发布的针对其他问题的多部分代码所做的修改最终看起来很像你的。可惜它不是内置的。
    【解决方案2】:

    使用 Net::HTTP#body_stream(input)

    multipart post without streaming 的示例:

    【讨论】:

    • 此链接已损坏
    猜你喜欢
    • 2011-10-03
    • 2011-01-19
    • 2014-11-02
    • 1970-01-01
    • 2013-07-19
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多