使用WWW:Mechanize将文件下载到磁盘而不先将其全部加载到内存中

我正在使用Mechanize来方便下载某些文件。 目前我的脚本使用以下行实际下载文件…

agent.get('http://example.com/foo').save_as 'a_file_name' 

但是,在将完整文件转储到磁盘之前,会将其下载到内存中。 你如何绕过这种行为,直接下载到磁盘? 如果我需要使用WWW以外的东西:Mechanize那么我将如何使用WWW:Mechanize的cookies?

你真正想要的是Mechanize :: Download

http://mechanize.rubyforge.org/Mechanize/Download.html

你可以用这种方式:

 require 'mechanize' agent = Mechanize.new agent.pluggable_parser.default = Mechanize::Download agent.get('http://example.com/foo').save('a_file_name') 

你看过Mechanize :: FileSaver吗? 看起来它可以做你需要的。

这是一个保存它遇到的所有PDF文件的示例:

 require 'rubygems' require 'mechanize' agent = Mechanize.new agent.pluggable_parser.pdf = Mechanize::FileSaver agent.get('http://example.com/foo.pdf')