Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从node.js中的URL同步下载文件_Javascript_Node.js - Fatal编程技术网

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

Javascript 如何从node.js中的URL同步下载文件,javascript,node.js,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

我正在尝试使用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();
    });
  });
}

对于(i=1;i我建议为此使用异步模块:

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

我强烈建议不要同步执行此操作,即使您能够找到如何执行此操作的方法。我建议创建要下载的文件队列,并在图像一个接一个下载时运行该队列,或者一次下载任意数量的图像。正如您所注意到的,节流非常重要。Brad,谢谢!我该怎么做从那开始?也许每个限制都是一个更好的选择,而不是试图同时下载所有图片?可能是,也可能不是)我更改了,谢谢。