javascript - 按 Node 下载图像(请求)

标签 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, 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));
});
};

但是代码中有一些错误。

代码无法运行

request(trueUrl, function(err, response, body) {
      if(!err && response.statusCode == 200) {
          download(trueUrl, dir, name);
          console.log("Done" + trueUrl);
                    }
          });

那么,我该怎么办?

<小时/>

现在,我发现控制台会输出done http://a.com/10.jpg .

最后,下载的图片只有10.jpg

最佳答案

嘿伙计,我编辑了你的代码,现在它可以工作了,我写了图像的 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();

关于javascript - 按 Node 下载图像(请求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30771586/

相关文章:

javascript - 可观察的转换

javascript - 实现上一页和下一页逻辑的最佳方法是什么

node.js - 如何检查 POST 请求的纯文本响应?

iphone - Objective-C:线程中的服务器请求(类似于 Android 中的 AsyncTask)

javascript - 勒纳和 Jenkins 制定战略

node.js - 使用 socketio 心跳的优点/缺点

javascript - 如何运行 module.exports 中的属性?

laravel - 我可以从客户端浏览器获取哪些信息以及如何在 laravel 7.x 中获取这些信息

jquery - Ajax请求失败,不明白为什么

javascript - 在 CreateJS 中加载视频最简单的方法?