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

目录
  • 引言
  • 初始化项目
  • 安装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

以上就是node+axios实现下载外网文件到本地的详细内容,更多关于node axios下载外网文件到本地的资料请关注我们其它相关文章!

(0)

相关推荐

  • node+axios实现服务端文件上传示例

    目录 一.接口文档介绍 二.文件上传 2-1.初始化项目 2-2.安装插件依赖 2-3.上传核心代码 2-4.执行脚本 最近调研企业wx集成H5应用,其中有一个发送图文消息,需要上传图片到临时素材库.之前做过文件上传到阿里云.七牛云都是服务端提供封装好的文件上传接口,在客户端使用ajax的方式上传.所以就来踩踩坑,使用node+axios实现服务端文件上传. 一.接口文档介绍 请求方式:POST(HTTPS) 请求地址:https://qyapi.weixin.qq.com/cgi-bin/me

  • nodejs+axios爬取html出现中文乱码并解决示例

    目录 一.乱码原因 二.解决办法 一.乱码原因 当使用 nodejs + axios 来爬取某个 url 对应的 html 时,出现中文乱码. 在 HTML 页面的 head 中没有设置 <meta charset="UTF-8"> ,而 html 页面默认是 GBK 的编码. 使用 axios 发送请求 responseEncoding 默认是 utf8,造成编码不一致,导致最后获取到的 html 内容出现中文乱码. 二.解决办法 以二进制流的形式获取 HTML 内容,再

  • 详解Vue+axios+Node+express实现文件上传(用户头像上传)

    Vue 页面的代码 <label for='my_file' class="theme-color"> <mu-icon left value="backup"></mu-icon> 修改头像 </label> <input type="file" ref="upload" name="avatar" id='my_file' style="d

  • nodejs(officegen)+vue(axios)在客户端导出word文档的方法

    前言 我的项目中有一个需求:点击按钮生成可编辑的word文档订单详情的信息 我使用的前端框架是Vue.js.后台使用的是node.js node.js生成和导出word文档我参考的是下面这两篇文章,写的挺好的(github上的那篇里面还有node.js生成word.excel.ppt的example,需要详细的可以看里面) https://www.jb51.net/article/144769.htm https://github.com/Ziv-Barber... 问题 node.js上面这两

  • node.js通过axios实现网络请求的方法

    1.使用Npm 下载axios npm install --save axios var update_url = axios.create({ baseURL:'debug url' }); update_url.get('/debug url').then(function (response){ //response 就是请求url 返回的内容 } 上述的方法请求文件时候,body的默认格式不是form-data.因此我们需要请求的数据格式为form-data的时候,需要使用下面的库 re

  • node.js中axios使用心得总结

    Axios是一个基于Promise的 HTTP 库,可以用在浏览器和node.js 中,因为尤大大的推荐,axios也变得越来越流行.最近项目中使用axios也遇到了一些问题,就借此机会总结一下,如有错误,还请不吝指正. 功能 浏览器端发起XMLHttpRequests请求 node层发起http请求 支持Promise API 拦截请求和响应 转换请求和响应数据 取消请求 自动转换JSON数据 客户端支持防御XSRF(跨站请求伪造) 兼容 使用 npm npm install axios bo

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

    目录 引言 初始化项目 安装axios 实现逻辑 执行 引言 作为一个web前端开发,对axios肯定不陌生,但是在前端开发中,一般是使用axios来请求后端接口,获取数据.而使用node+axios下载网络文件到本地磁盘可能很少接触,搜索了很多相关的博客文章,讲解的好像都不够清晰明了,所以本文就记录一下实践方法. 初始化项目 npm init -y 安装axios npm i -S axios 实现逻辑 根目录下新建app.js // app.js const axios = require(

  • Java下载远程服务器文件到本地(基于http协议和ssh2协议)

    Java中java.io包为我们提供了输入流和输出流,对文件的读写基本上都依赖于这些封装好的关于流的类中来实现.前段时间遇到了以下两种需求: 1.与某系统对接,每天获取最新的图片并显示在前端页面.该系统提供的是一个http协议的图片URL,本来获取到该系统的图片地址以后在HTML中显示就可以了,但是该系统不太稳定,图片URL经常不能使用,而且每天生成图片不一定成功, 对自己系统的功能影响很大,emm...所以就考虑每天从该系统下载最新的图片到本地更新保存,没有新图片就继续使用上次的图片. 2.公

  • Android开发获取手机内网IP地址与外网IP地址的详细方法与源码实例

    在进行Android应用开发过程中,有时候会遇到获取当前Android设备所使用的网络IP地址的场景,有时候需要本地的网络IP地址,即局域网地址,更多的时候是需要当前网络的真实的对外IP地址,即真实的网络地址,如大数据分析时往往需要Android设备上传本地的外网地址.本文对各种IP地址的获取进行了总结. 首先用大家比较熟悉的电脑端局域网地址和外网地址的获取方式对比一下:(1).电脑端局域网地址获取方式,可以通过在终端命令行输入ipconfig进行查看,如下图IPv地址标识的就是本机的局域网地址

  • Node.js实现下载文件的两种实用方式

    目录 第一种方式:使用原生的http模块 第二种方式:使用Express+Axios下载文件 总结 设置响应头 返回数据流 第一种方式:使用原生的http模块 我们仅需要用到fs和http两个node.js的原生模块,不需要安装第三方模块,就可以实现文件的下载.代码如下: var fs = require('fs'); var http = require("http"); var server = http.createServer(); server.on("reques

  • Linux 下载百度网盘大文件的方法

    Linux 下没有百度网盘客户端,用浏览器下载速度慢得急死人 鼠标移到链接处, 右键, 然后复制链接 接着在终端里输入 axel -n 50 -o filename.ext "粘贴链接到此处" axel 是下载程序名, -n 后面数字是线程数,多少自己决定, -o 后面下载到本机上 保持的文件名, 最后面 英文引号里面放下载链接 使用这种方式 我的下载速度可以达到1.5M, 跟浏览器 10KB 左右的速度比简直是飞起 总结 以上所述是小编给大家介绍的Linux 下载百度网盘大文件的方法

  • 全网最强下载神器IDM使用教程之利用IDM加速下载百度网盘大文件的方法

    目录 01 开发背景 02 功能介绍 03 如何下载百度网盘 1.安装IDM软件 2.配置IDM软件 3.安装油猴脚本 4.下载百度网盘文件 推荐阅读: IDM 6.40.11.2 弹窗的完美解决思路 一个假冒的序列号被用来注册Internet Download Manager,IDM正在退出的解决办法 超实用Internet Download Manager(IDM)破解注册码,全版本通用 自从不限速度盘下载工具Pandownload被封杀后,有些网友纷纷表示:幸好我们还有IDM. 但是,对于

  • Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网

    1.准备工作. 1.首先准备安装Vue及Vue-CLI $ npm install vue $ npm install -g @vue/cli 2.其次下载Tomcat tomcat.apache.org/index.html 任选一个版本,我测试用的是macOS,所以下载了第二个压缩包 ​ 下载到本地后,解压缩,并且将解压缩后的文件夹复制到以下路径下,其中电脑名称就是你的用户名称. /Users/{电脑名称}/Library ,并且重命名为ApacheTomcat,这里要提一下,在这个文件夹下

  • 获取外网IP并发送到指定的邮箱的脚本

    我们编译后的exe文件,方便大家直接使用 下载地址 http://www.jb51.net/softs/44627.html 配置文件内容如下: 复制代码 代码如下: 配置文件代码 [收件人] 收件地址= 邮件标题= [发送人] 邮箱= 密码= 核心代码: 复制代码 代码如下: #region AutoIt3Wrapper 预编译参数(常用参数) #AutoIt3Wrapper_Icon=D:\ico\3444\2222.ico ;图标,支持EXE,DLL,ICO #AutoIt3Wrapper

  • 使用vbs获得外网ip并发送到邮箱里

    获得本地外网地址并发送到指定邮箱,还可以参考这个文章http://www.jb51.net/article/40064.htm 复制代码 代码如下: '* **************************************** *  '* 程序名称:GetIP.vbs  '* 程序说明:获得本地外网地址并发送到指定邮箱  '* 编码:lyserver    '* **************************************** * Option Explicit Cal

随机推荐