2013-06-29 129 views
1

我需要從網址下載多個文件。我已經在文件中列出了它們的列表。我應該怎麼做?我已經做到了,但它不起作用。我需要保持直到最後一次下載完成,然後再開始下一個wan。我怎樣才能做到這一點?Node.js下載多個文件

+0

你需要從url給出的網頁中提取文件?或者你只是想下載網址? – user568109

回答

5

您想在此之前調用文件回調的下載功能。我扔在一起的時候,不要認爲它漂亮也沒有生產做好準備,請;-)

var http = require('http-get'); 

var files = { 'url' : 'local-location', 'repeat-this' : 'as often as you want' }; 

var MultiLoader = function (files, finalcb) { 

     var load_next_file = function (files) { 

       if (Object.keys(files) == 0) { 
         finalcb(null); 
         return; 
       } 

       var nexturl = Object.keys(files)[0]; 
       var nextfnname = files[nexturl]; 

       console.log('will load ' + nexturl); 
       http.get(nexturl, nextfnname, function (err, result) { 
         console.log('loaded ' + nexturl); 
         delete files[nexturl]; 
         load_next_file(files); 
       }); 
     }; 

     load_next_file(JSON.parse(JSON.stringify(files))); 

}; 

MultiLoader(files, function() { console.log('finalcb'); }); 

http-get不是一個標準的節點模塊,您可以通過npm install http-get安裝。

+1

最大的問題是,如何讀取文件的下載列表。請問我該怎麼做? – user2316602

0

你可以閱讀使用FS文件(VAR FS =要求( 'FS');)在節點JS

fs.readFile('<filepath>', "utf8", function (err, data) { 
     if (err) throw err; 
     console.log(data); 
       });