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


字数:460 阅读时长:2分钟 阅读:85

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

Node+Axios下载图片

初始化项目

1
npm init -y

安装axios

1
npm i -S axios

实现逻辑

  • 根目录下新建app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 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中提供的计时方法。

执行

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

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

参考文档:


相关文章


欢迎访问:个人博客地址

本文作者: Tiven
发布时间: 2021-10-12
最后更新: 2022-06-12
本文标题: node+axios下载外网文件到本地
本文链接: https://www.tiven.cn/p/9b735250/
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!
欢迎留言,提问 ^_^