NodeJs

nodejs通过request请求远程url的文件并下载到本地

  • request模块让http请求变的更加简单。最简单的一个示例:
   var request = require('request');


   request('http://www.google.com', function (error, response, body) {

   if (!error && response.statusCode == 200) {

        console.log(body);

      }
   })
  • 可以用request的pipe方法很方便的获取图片的文件流

   var request = require('request'),

   fs = require('fs'); 

   request('https://www.google.com.hk/images/srpr/logo3w.png').pipe(fs.createWriteStream('doodle.png'));

  • 需要循环去下载远程文件,然后自己写了一个demo,可以直接运行,如下:
//文件下载
var fs = require("fs");
var path = require("path");
var request = require("request");

//创建文件夹目录
var dirPath = path.join(__dirname, "file");
if (!fs.existsSync(dirPath)) {
    fs.mkdirSync(dirPath);
    console.log("文件夹创建成功");
} else {
    console.log("文件夹已存在");
}

//循环多线程下载
for (let i = 0; i < 60; i++) {
    let fileName = "out" + intToString(i, 3) + ".ts";
    let url = "https://xxx.sdhdbd1.com/cb9/sd/gc/g1/670BC531/SD/" + fileName;
    let stream = fs.createWriteStream(path.join(dirPath, fileName));
    request(url).pipe(stream).on("close", function (err) {
        console.log("文件[" + fileName + "]下载完毕");
    });
}

//整数转字符串,不足的位数用0补齐
function intToString(num, len) {
    let str = num.toString();
    while (str.length < len) {
        str = "0" + str;
    }
    return str;
}