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

标签 ruby http forms networking multipartform-data

我目前在 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/

相关文章:

web-services - 创建一对一的 RESTful API 关系

forms - Spring MVC 表单 Hibernate validator : Cross parameter constraint has no cross parameter validator

ruby-on-rails - Controller 操作引发错误

ruby-on-rails - Ruby on Rails、ActiveRecord、Postgres、UTF-8 和 ASCII-8BIT 编码

http - htaccess : force http on all pages and https on select directories

javascript - Node.js http - 将 GET 数据发送到服务器

php - 检查是否已收到邮寄请求

wordpress - 用于 WordPress 重定向的 MailChimp

ruby - 命名空间和混合

ruby - 关于在 Ruby(非 Rails)中创建 OAuth 提供程序的教程或文档