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.time
和console.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
投稿
猜你喜欢
- 首先,"/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Un
- 两个JS之间的函数互相调用这个问题是我在工作中用到的一个方法 因为要做封装所以想到能不能在一个js中引用另一个js中的function这样的
- 如下所示:# -*- coding: utf-8 -*-import sysfrom PySide.QtGui import *from P
- 之前用 copy 不多,本以为它是个很方便的函数,没想到在做练习题时竟还是被它坑了。是我对他期望太多了。func copy(dst, src
- 本文实例讲述了Python实现的远程文件自动打包并下载功能。分享给大家供大家参考,具体如下:一 点睛在Linux系统集群运营当中,时常需要批
- abs()返回一个数字的绝对值,它的参数可以是整数或者浮点数。举个例子:all()参数为一个可迭代对象,如果该可迭代对象所有元素的真值都为T
- 概览(循环方式 - 常用)formapforEachfilter声明遍历的数组和异步方法声明一个数组:??const skills = [&
- 一、 前期准备1. 设置GPU如果设备上支持GPU就使用GPU,否则使用CPUimport torchimport torch.nn as
- 一空间多域名绑定3种方法,HTML代码格式:<html> <script language=javascript
- 一、matplotlib.pyplot.boxplot()语法boxplot(x, notch=None, sym=None, vert=N
- 一、前言Python语言近年来人气爆棚。它广泛应用于数据科学,人工智能,以及网络安全问题中,由于代码可读性较强,学习效率较高,吸引了许多非科
- 线性回归实战使用PyTorch定义线性回归模型一般分以下几步: 1.设计网络架构 2.构建损失函数(loss)和优化器(optimizer)
- 在应用系统中,尤其在联机事务处理系统中,对数据查询及处理速度已成为衡量应用系统成败的标准。而采用索引来加快数据处理速度也成为广大数据库用户所
- 一、备份数据库1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server2、SQL Server组-->
- 长期以来一直以为iframe跟div一样都是块级元素,直到今天在一个群中看到一位朋友问到iframe怎么居中的时候,测试了下发现原来我一直对
- 开始之前,安利一本正在看的书《站在两个世界的边缘》,作者程浩,上帝丢给他太多理想,却忘了给他完成理想的时间。OK,有兴趣的可以看一看。nod
- 使用element-resize-detector监听元素宽度变化如图,当我们切换左侧菜单展示效果的时候,右侧内容会对应变宽,但此时的ech
- 实战场景Python 工程师在日常的工作中,经常会碰到解析和处理PDF文件的情况,实战中需求主要分为如下情况:提取 PDF 中的文字将 PD
- TensorFlow是Google公司2015年11月开源的第二代深度学习框架,是第一代框架DistBelief的改进版本. TensorF
- 最近我在用梯度下降算法绘制神经网络的数据时,遇到了一些算法性能的问题。梯度下降算法的代码如下(伪代码):def gradient_desce