2010-12-05 9 views
16

मैं कुछ फ़ाइलों को डाउनलोड करने में सुविधा के लिए मैकेनाइजेशन का उपयोग कर रहा हूं। फिलहाल मेरी स्क्रिप्ट वास्तव में फ़ाइलों को डाउनलोड करने निम्न पंक्ति का उपयोग करता है ...डब्ल्यूडब्ल्यूडब्ल्यू का उपयोग करना: डिस्क में फ़ाइल को लोड करने के लिए मैकेनाइजेशन को स्मृति में पहले लोड करने के लिए पहले

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

हालांकि इस स्मृति में पूरी फाइल डाउनलोड करता है डिस्क के लिए यह डंपिंग से पहले। आप इस व्यवहार को कैसे बाईपास करते हैं, और सीधे डिस्क पर डाउनलोड करते हैं? अगर मुझे डब्ल्यूडब्ल्यूडब्ल्यू के अलावा कुछ और उपयोग करने की ज़रूरत है: मैकेनाइजेशन तो मैं डब्ल्यूडब्ल्यूडब्ल्यू का उपयोग करने के बारे में कैसे जाउंगा: मैकेनाइज की कुकीज़ इसके साथ?

+0

कृपया ध्यान दें कि 'मशीनीज़ :: फ़ाइल' वर्ग बड़ी फ़ाइलों के लिए उपयुक्त नहीं है । उन मामलों में, किसी को 'मैकेनाइज :: डाउनलोड' क्लास का उपयोग करना चाहिए, क्योंकि यह डिस्क पर छोटे हिस्सों में सामग्री डाउनलोड करता है। अधिक जानकारी के लिए [यहां] देखें (http://www.rubydoc.info/gems/mechanize/Mechanize/PluggableParser) और [यहां] (http://www.rubydoc.info/gems/mechanize/Mechanize/Download)। – pierrebonbon

उत्तर

2

क्या आपने Mechanize::FileSaver पर देखा है? ऐसा लगता है कि यह वही कर सकता है जो आपको चाहिए।

यहाँ एक उदाहरण है कि सभी पीडीएफ फाइलों यह मुठभेड़ों बचाता है:

require 'rubygems' 
require 'mechanize' 

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

क्या आप वास्तव में चाहते हैं मशीनीकरण है :: डाउनलोड

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') 
+0

मैं जोड़ूंगा कि मैंने आपके समाधान का बिल्कुल उपयोग किया है, सिवाय इसके कि मैकेनाइजेशन था: मैकेनाइजेशन के बजाय फ़ाइलसेवर: डाउनलोड करें। और यह काम नहीं किया है => फ़ाइलें डिस्क पर सहेजी जाती हैं लेकिन बिना किसी सामग्री के .0 केबी। मैंने इसे सिर्फ डाउनलोड के साथ बदल दिया है और पूरा सही है :) धन्यवाद – Mik378

+3

फ़ाइल कहां से सहेजी जाती है? – carbonr

+1

'agent.get (url) .save (file.join (dir, filename) के साथ @carbonr) 'फ़ाइल आपके द्वारा निर्दिष्ट डीआईआर में सहेजी जाएगी। – bfcoder

संबंधित मुद्दे

 संबंधित मुद्दे