如何从node.js中的URL同步下载文件

时间:2013-10-08 20:10:03

标签: javascript node.js

我正在尝试使用Flickr API和循环中的http.get()调用从Flickr下载大量文件。

我有图像URL的数组,我使用'下载'功能下载图片 如果有大量图像,则大多数是空文件。 我在这里找到了下载代码 请告知如何处理这个问题 提前谢谢!

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();
    });
  });
}

P.S。然后最后有错误: events.js:72         扔掉//未处理的'错误'事件               ^ 错误:套接字挂断     在createHangUpError(http.js:1442:15)     在Socket.socketOnEnd [as onend](http.js:1538:23)     在Socket.g(events.js:175:14)     在Socket.EventEmitter.emit(events.js:117:20)     at _stream_readable.js:910:16     at process._tickCallback(node.js:415:13)

1 个答案:

答案 0 :(得分:4)

我建议使用异步模块:

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

并取消注释cb();在下载功能