Javascript 按节点下载图像(请求)

Javascript 按节点下载图像(请求),javascript,node.js,request,imagedownload,Javascript,Node.js,Request,Imagedownload,我想在网站上下载一些图片,这些图片是由 http://a.com/1.jpg http://a.com/2.jpg http://a.com/3.jpg 所以,我写了代码来实现它 我的代码是: var request = require('request'); var fs = require('fs'); var mkdir = require('mkdirp'); var preUrl = 'http://a.com/'; var dir = './images'; mkdir(dir

我想在网站上下载一些图片,这些图片是由

http://a.com/1.jpg
http://a.com/2.jpg
http://a.com/3.jpg
所以,我写了代码来实现它

我的代码是:

var request = require('request');
var fs = require('fs');
var mkdir = require('mkdirp');

var preUrl = 'http://a.com/';
var dir = './images';

mkdir(dir, function(err) {
if(err) {
    console.log(err);
}
});
for(var i = 1; i <= 10; i++){
  var trueUrl = preUrl + i + '.jpg';
  var name = i + '.jpg';
   request(trueUrl, function(err, response, body) {
  if(!err && response.statusCode == 200) {
      download(trueUrl, dir, name);
      console.log("Done" + trueUrl);
                }
      });                
}
var download = function(url, dir, filename) {
request.head(url, function(err, res, body) {
    request(url).pipe(fs.createWriteStream(dir + '/' + filename));
});
};
那么,我该怎么办


现在,我发现控制台将输出完成


最后,下载图像仅为10。jpg

在加入url元素时使用
url.resolve
,以防止类似错误。()


嘿,伙计,我编辑了你们的代码,现在它工作了,我写了图片的示例trueUrl 当您使用异步请求时,您可以使用这行代码,但不要使用for循环

var request = require('request');
var fs = require('fs');
var mkdir = require('mkdirp');

var preUrl = 'http://a.com/';
var dir = './images';

mkdir(dir, function(err) {
if(err) {
    console.log(err);
}
});

var n = 10, i = 0;
function downloadImage() {
  var trueUrl = preUrl + i + '.jpg';
  var name = i + '.jpg';
  trueUrl = "http://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2014/4/11/1397210130748/Spring-Lamb.-Image-shot-2-011.jpg"
  request(trueUrl, function(err, response, body) {
    if(!err && response.statusCode == 200) {
      download(trueUrl, dir, name);
    }
    i++;
    if(i >= 10) {
      return;
    } else {
      downloadImage();
    }
  }); 
  console.log('i=' + i)
}
var download = function(url, dir, filename) {
  request.head(url, function(err, res, body) {
      request(url).pipe(fs.createWriteStream(dir + '/' + filename));
  });
};

downloadImage();
我解决了这个问题


使用请求承诺,无请求

你能编辑你的问题并添加错误吗?不,如果我下载一张图片,URLYes中没有错误!但是我想下载10张不同的图片。我该怎么做?注释这行:trueUrl=“”
url.resolve('/one/two/three', 'four')         // '/one/two/four'
url.resolve('http://example.com/', '/one')    // 'http://example.com/one'
url.resolve('http://example.com/one', '/two') // 'http://example.com/two'
var request = require('request');
var fs = require('fs');
var mkdir = require('mkdirp');

var preUrl = 'http://a.com/';
var dir = './images';

mkdir(dir, function(err) {
if(err) {
    console.log(err);
}
});

var n = 10, i = 0;
function downloadImage() {
  var trueUrl = preUrl + i + '.jpg';
  var name = i + '.jpg';
  trueUrl = "http://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2014/4/11/1397210130748/Spring-Lamb.-Image-shot-2-011.jpg"
  request(trueUrl, function(err, response, body) {
    if(!err && response.statusCode == 200) {
      download(trueUrl, dir, name);
    }
    i++;
    if(i >= 10) {
      return;
    } else {
      downloadImage();
    }
  }); 
  console.log('i=' + i)
}
var download = function(url, dir, filename) {
  request.head(url, function(err, res, body) {
      request(url).pipe(fs.createWriteStream(dir + '/' + filename));
  });
};

downloadImage();