网络编程
位置:首页>> 网络编程>> JavaScript>> node+axios实现下载外网文件到本地

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

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

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

引言

作为一个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/

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com