Использование WWW: Механизировать загрузку файла на диск, не загружая его сначала в память
Я использую Mechanize для облегчения загрузки некоторых файлов. В настоящий момент моя script использует следующую строку для фактической загрузки файлов...
agent.get('http://example.com/foo').save_as 'a_file_name'
Однако он загружает полный файл в память, прежде чем выгружать его на диск. Как вы обходите это поведение и просто загружаете прямо на диск? Если мне нужно использовать что-то другое, кроме WWW: Механизируйте, то как я буду использовать WWW: Механизировать файлы cookie с ним?
Ответы
Ответ 1
Что вы действительно хотите, так это 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')
Ответ 2
Вы посмотрели на Mechanize:: FileSaver? Похоже, он может делать то, что вам нужно.
Вот пример, который сохраняет все файлы PDF, с которыми он сталкивается:
require 'rubygems'
require 'mechanize'
agent = Mechanize.new
agent.pluggable_parser.pdf = Mechanize::FileSaver
agent.get('http://example.com/foo.pdf')