node+axios下载外网文件到本地

作为一个web前端开发,对axios肯定不陌生,但是在前端开发中,一般是使用axios来请求后端接口,获取数据。而使用node+axios下载网络文件到本地磁盘可能很少接触,搜索了很多相关的博客文章,看的还是一知半解,,于是就亲自写个demo。所以本文就记录一下实践方法。

Node+Axios下载图片

初始化项目

npm init -y

安装axios

npm i -S axios

实现逻辑

  • 根目录下新建app.js
// app.js
const axios = require('axios');
const fs = require('fs');

async function loadImg(imgUrl) {
  let { data } = await axios({
    url: imgUrl,
    headers: {
      'Content-Type': 'multipart/form-data',
    },
    responseType: 'arraybuffer',
  })
  await fs.promises.writeFile(`./01.jpg`, data, 'binary');
}

;(async function () {
  let url = 'https://tiven.cn/static/img/img-post-08-c1kr9HQ13lTEmcyI_mowX.jpg'
  console.time('download time:')
  try {
    await loadImg(url)
    console.log('下载成功')
  } catch (err) {
    console.log(err)
  }
  console.log('')
  console.timeEnd('download time:')
})();

说明:

  • axios 的参数 headersContent-Type默认是application/json,需要设置为 multipart/form-data
  • responseType默认是json,需要设置为arraybuffer(二进制格式);
  • writeFile方法的第三个参数encoding默认是utf8,必须设置为binary(二进制格式),如果不设置,下载的文件打不开。
  • console.timeconsole.timeEnd是node中提供的计时方法。

执行

node app.js
  • 输出
下载成功
download time:107.866ms

如果想要批量爬取某个网站的图片或其他文件,可以使用node爬虫工具cheerio来实现。

参考文档:


《node+axios服务端文件上传下载》系列


欢迎访问:个人博客地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 客 户端的JavaScript是怎样的 什么是JavaScript? +是一个脚本语言 运行在浏览器(浏览器...
    hcySam阅读 3,180评论 0 2
  • Node课程大纲V10(一周) 目录 1 day 基本介绍 环境配置(node nvm,cnpm) REPL 环境...
    Mstian阅读 2,682评论 0 1
  • #Node课程大纲V10(一周) ##目录 *1day -基本介绍 -环境配置(nodenvm,cnpm) -RE...
    lint_b7d1阅读 1,358评论 0 0
  • 前端工程化 前端工程化就是通过各种工具和拘束,提升前端开发效率的过程。 NOde.js 官方网址:nodejs.o...
    GongShengM阅读 1,826评论 0 0
  • 一 文件模块fs API地址:http://nodejs.cn/api/fs.html fs模块即:文件模块,是N...
    陈观齐阅读 3,401评论 0 0