2013-10-08 8 views
5

में यूआरएल से फ़ाइलों को सिंक्रनाइज़ करने के लिए कैसे करें मैं फ्लिकर एपीआई और http.get() कॉल लूप में कॉल का उपयोग करके फ़्लिकर से कई फाइलें डाउनलोड करने का प्रयास कर रहा हूं।node.js

मैं छवि यूआरएल की सरणी है और मैं अगर वहाँ छवियों का एक बड़ी संख्या है ज्यादातर खाली फ़ाइलें हैं चित्रों डाउनलोड करने के लिए 'डाउनलोड' समारोह का उपयोग करें। मुझे यहां डाउनलोड कोड मिला।
कृपया सलाह दें कि इस तक कैसे पहुंचे।
अग्रिम धन्यवाद!

for (i=1;i<100;i++){ 

    filename= "./images/file"+i+".jpg"; 

    download(photourl[i], filename,{}); 


    } //End of for-loop 

..... 

var download = function(url, dest, cb) { 
    var file = fs.createWriteStream(dest); 
    var request = http.get(url, function(response) { 
    response.pipe(file); 
    file.on('finish', function() { 
     file.close(); 
     //cb(); 
    }); 
    }); 
} 

पीएस और फिर अंत में त्रुटि है: events.js: 72 फेंक एर; // बिना क्रिया 'त्रुटि' घटना ^ त्रुटि: Socket.socketOnEnd पर [के रूप में onend] (http.js: 1538: 23) Socket.g पर सॉकेट (:: 1442 15 http.js) createHangUpError पर लटका (events.js: 175: 14) Socket.EventEmitter.emit पर (events.js: 117: 20) _stream_readable.js पर: 910: 16 process._tickCallback पर (Node.js: 415: 13)

+4

मैं दृढ़ता से यह सिंक्रनाइज़ नहीं करने का सुझाव देता हूं, भले ही आप यह समझ सकें कि इसे कैसे किया जाए। मैं डाउनलोड करने के लिए फ़ाइलों की कतार बनाने की सिफारिश करता हूं, और उस कतार को चलाने के रूप में छवियों को एक-एक करके डाउनलोड किया जाता है, या जितना आप चाहें उतने समय में। जैसा कि आपने देखा है, थ्रॉटलिंग महत्वपूर्ण है। – Brad

+1

ब्रैड, धन्यवाद! मैं इसके साथ कैसे शुरू करूं? – user2013424

उत्तर

3

मैं इसके लिए async मॉड्यूल का उपयोग करने के लिए सलाह देते हैं:()

var i = 1, threads = 5; 
require('async').eachLimit(photourl, threads, function(url, next){ 
    download(url, "./images/file"+(i++)+".jpg", next); 
}, function(){ 
    console.log('finished'); 
}) 

और टिप्पणी हटाएं सीबी; डाउनलोड फ़ंक्शन

+1

शायद 'प्रत्येक लिमिट' ** छवियों के सभी ** एक साथ डाउनलोड करने की कोशिश करने के बजाय बेहतर विकल्प होगा? – WiredPrairie

+0

हो सकता है, और हो सकता है) मैं इसे बदलता हूं, धन्यवाद। –