I'm using Mechanize to facilitate the downloading of some files. At the moment my script uses the following line to actually download the files...
agent.get('http://example.com/foo').save_as 'a_file_name'
However this downloads the complete file into memory before dumping it to disk. How do you bypass this behavior, and simply download 开发者_如何学编程straight to disk? If I need to use something other than WWW:Mechanize then how would I go about using WWW:Mechanize's cookies with it?
What you really want is the Mechanize::Download
http://mechanize.rubyforge.org/Mechanize/Download.html
you can use this way:
require 'mechanize'
agent = Mechanize.new
agent.pluggable_parser.default = Mechanize::Download
agent.get('http://example.com/foo').save('a_file_name')
Have you looked at Mechanize::FileSaver? It looks like it can do what you require.
Here is an example that saves all the PDF files it encounters:
require 'rubygems'
require 'mechanize'
agent = Mechanize.new
agent.pluggable_parser.pdf = Mechanize::FileSaver
agent.get('http://example.com/foo.pdf')
精彩评论