将url下载到本地

const axios=require('axios')
const fs = require('fs-extra');
const https=require('https')
const path=require('path')
function resolve (dir) {
  return path.join(__dirname, '..', dir)
}

/**将url下载到本地
 * */
class LoadUrlManage{
  constructor (rArr){
    this.rArr=[
      [/\?.*$/,'']
    ]
    if(Array.isArray(rArr)){
      this.rArr=this.rArr.concat(rArr)
    }

    this.ignoreSSL = axios.create({
      responseType: "stream",
      httpsAgent: new https.Agent({
        rejectUnauthorized: false
      })
    });
  }
  async getUrl(url){
    const res=await this.ignoreSSL({
      url:url,
      method: "GET",
    })
    if(res.status===200){
      return res;
    }
    throw res;
  }
  async loadUrl(url){
    let filepath=url;
    this.rArr.forEach(function (arr) {
      filepath=filepath.replace(arr[0],arr[1])
    })
    fs.ensureDirSync(path.dirname(filepath))

    const res=await this.getUrl(url)
    res.data.pipe(fs.createWriteStream(filepath))
    return filepath;
  }
}
module.exports=LoadUrlManage;

  

posted @ 2021-05-20 18:29  无工时代  阅读(112)  评论(0编辑  收藏  举报