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

作者:天问 时间:2024-05-05 09:20:48 

引言

作为一个web前端开发,对axios肯定不陌生,但是在前端开发中,一般是使用axios来请求后端接口,获取数据。而使用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 的参数 headers 中 Content-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来实现。

参考文档

http://nodejs.cn/api/fs.html#fs_fs_writefile_file_data_options_callback

http://www.axios-js.com/docs/#Request-Config

来源:https://tiven.cn/p/9b735250/

标签:node,axios,文件下载,外网,本地
0
投稿

猜你喜欢

  • Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例

    2022-11-08 14:50:22
  • java使用dbcp2数据库连接池

    2024-01-29 05:33:42
  • python基于右递归解决八皇后问题的方法

    2021-01-12 21:02:38
  • python如何写出表白程序

    2023-12-19 17:10:56
  • Python Django2.0集成Celery4.1教程

    2023-10-17 21:28:52
  • MySQL修改默认引擎和字符集详情

    2024-01-14 21:37:27
  • JavaScript中的64位加密及解密

    2009-12-23 19:10:00
  • Python正则表达式中的'r'用法总结

    2021-08-22 23:16:34
  • javascript实现文字无缝滚动效果

    2024-04-22 22:35:19
  • Python 保持登录状态进行接口测试的方法示例

    2023-03-18 17:09:07
  • 使用numpy.ndarray添加元素

    2022-10-31 06:12:15
  • 浅谈对python中if、elif、else的误解

    2021-04-04 00:57:57
  • Python中性能分析利器pyinstrument详细讲解

    2021-02-15 10:46:51
  • Python解析多帧dicom数据详解

    2022-08-13 21:16:13
  • Mysql删除重复数据并且只保留一条(附实例!)

    2024-01-27 04:48:27
  • Python使用urllib模块的urlopen超时问题解决方法

    2023-12-16 02:49:50
  • oracle 常用的几个SQL

    2009-12-01 12:36:00
  • python 统计列表中不同元素的数量方法

    2023-10-16 05:22:33
  • vue 解决异步数据更新问题

    2024-04-30 10:45:28
  • Python多线程多进程实例对比解析

    2022-10-09 16:43:20
  • asp之家 网络编程 m.aspxhome.com