8

我正在尝试使用 Flickr API 从 Flickr 下载一些文件并http.get()循环调用。

我有图像 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();
    });
  });
}

PS 最后还有错误:events.js:72 throw er; // 未处理的 'error' 事件 ^ 错误:socket 在 Socket.g (events.js: 175:14) 在 Socket.EventEmitter.emit (events.js:117:20) 在 _stream_readable.js:910:16 在 process._tickCallback (node.js:415:13)

4

1 回答 1

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(); 在下载功能

于 2013-10-08T20:29:25.563 回答