2013-06-29 89 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); 
       });