NodeJS Request下载图片文件到本地⑩⑦

news2025/1/14 9:38:24

文章目录

  • ✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘
  • 前言
  • 使用模块
  • 创建文件
  • 删除文件
  • 写入图片
  • 案例效果
  • 总结


✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘

                    ⡖⠒⠒⠒⠤⢄⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸   ⠀⠀⠀⡼⠀⠀⠀⠀ ⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢶⣲⡴⣗⣲⡦⢤⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠉⠉⠓⠛⠿⢷⣶⣦⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⠀⠀⠀⠀⠀⠀⠀⢰⠇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡴⠊⠉⠳⡄⠀⢀⣀⣀⡀⠀⣸⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠰⠆⣿⡞⠉⠀⠀⠉⠲⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⢧⡀⣀⡴⠛⡇⠀⠈⠃⠀⠀⡗⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣱⠃⡴⠙⠢⠤⣀⠤⡾⠁⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⣇⡼⠁⠀⠀⠀⠀⢰⠃⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣸⢠⣉⣀⡴⠙⠀⠀⠀⣼⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡏⠀⠈⠁⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣀⠤⠚⣶⡀⢠⠄⡰⠃⣠⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢀⣠⠔⣋⣷⣠⡞⠀⠉⠙⠛⠋⢩⡀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀
⠀⡏⢴⠋⠁⠀⣸⠁⠀⠀⠀⠀⠀ ⠀⣹⢦⣶⡛⠳⣄⠀⠀⠀⠀⠀
⠀⠙⣌⠳⣄⠀⡇   不能   ⡏⠀⠀  ⠈⠳⡌⣦⠀⠀⠀⠀
⠀⠀⠈⢳⣈⣻⡇   白嫖 ⢰⣇⣀⡠⠴⢊⡡⠋⠀⠀⠀⠀
⠀⠀⠀⠀⠳⢿⡇⠀⠀⠀⠀⠀⠀⢸⣻⣶⡶⠊⠁⠀⠀
⠀⠀⠀⠀⠀⢠⠟⠙⠓⠒⠒⠒⠒⢾⡛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⣠⠏⠀⣸⠏⠉⠉⠳⣄⠀⠙⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⡰⠃⠀⡴⠃⠀⠀⠀⠀⠈⢦⡀⠈⠳⡄⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣸⠳⣤⠎⠀⠀⠀⠀⠀⠀⠀⠀⠙⢄⡤⢯⡀⠀⠀⠀⠀⠀⠀
⠀⠐⡇⠸⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡆⢳⠀⠀⠀⠀⠀⠀
⠀⠀⠹⡄⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⠸⡆⠀⠀⠀⠀⠀
⠀⠀⠀⠹⡄⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⣧⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢹⡤⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣷⠚⣆⠀⠀⠀⠀
⠀⠀⠀⡠⠊⠉⠉⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡎⠉⠀⠙⢦⡀⠀
⠀⠀⠾⠤⠤⠶⠒⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠒⠲⠤⠽   

前言

  1. Node.js是一个javascript运行环境。它让javascript可以开发后端程序,实现几乎其他后端语言实现的所有功能,可以与```PHP、Java、Python、.NET、Ruby等后端语言平起平坐。
  2. Nodejs是基于V8引擎,V8是Google发布的开源JavaScript引擎,本身就是用于Chrome浏览器的JS解释,但是Node之父 Ryan Dahl在这里插入图片描述把这V8搬到了服务器上,用于做服务器的软件。

使用模块

//导入模块
const path = require("path");
const fs = require("fs");
const request = require('request')

创建文件


创建文件

// 创建文件
createDir: (path) => {
    return new Promise(resolve => {
        fs.mkdir(path, (err) => {
            if (err && err.code === "EEXIST") console.log("目录已经存在")
            else console.log("目录创建成功...")
        })
        resolve();
    })
},

删除文件


删除文件

// 删除文件
deleteDir: (path) => {
    return new Promise(resolve => {
        try {
            let fileDirs = [];
            // 同步检查给定路径中是​​否已存在文件
            if (fs.existsSync(path)) {
                if (fs.statSync(path).isDirectory()) {
                    // 同步读取给定目录的内容。该方法返回一个数组
                    fileDirs = fs.readdirSync(path);
                    fileDirs.forEach(fileName => {
                        const temPath = `${path}/${fileName}`
                        //异步返回有关给定文件路径的信息。返回的fs.Stat对象具有多个字段和方法,以获取有关文件的更多详细信息。
                        if (fs.statSync(temPath).isDirectory()) {
                            deleteDir(temPath); // 递归删除目录
                        } else {
                            // fs.unlinkSync(temPath); //删除文件
                            fs.rmSync(temPath); //从文件系统中同步删除文件或符号链接
                        }
                    })
                    fs.rmdirSync(path); //删除目录
                }
                else {
                    //异步返回有关给定文件路径的信息。返回的fs.Stat对象具有多个字段和方法,以获取有关文件的更多详细信息。
                    fs.rmSync(path) //给定路径下同步删除文件
                }
            }
            resolve('删除文件成功!');
        }
        catch {
            resolve('删除文件失败!');
        }
    })
},

写入图片


删除文件

// 写入图片
writeImages: () => {
    imageUrl.forEach(url => {
        const fileName = url.split("/").pop();
        const process = fs.createWriteStream(path.join(__dirname + '/saveImg', `/${fileName}`));
        request({
            url,
            timeout: 5000
        }).pipe(process);
        process.on("finish", () => {
            console.log(`${fileName} 下载成功~`);
            process.close()
        });
        process.on("error", err => {
            console.log(`${fileName} 下载失败~`, new Error(err));
        });
    })
}

案例效果

在这里插入图片描述

总结

以上是个人学习Node的相关知识点,一点一滴的记录了下来,有问题请评论区指正,共同进步,这才是我写文章的原因之,如果这篇文章对您有帮助请三连支持一波

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网页前端制作需要哪些基础知识?

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言HTML基础知识1 HTM…

存款进阶“10万元门槛”,年轻人为何遭遇困境?

文章目录 ❗❗ 前言💌目前的存款在哪一个区间?你觉得存款难吗?😢存钱到底有多难?🤍为存款做出过哪些努力?🧧没钱更要理财吗?🆔影响年轻人存款能力和存款意愿的…

C++多态 动态联编 静态联编 虚函数 抽象类 final override关键字

C多态 多态多态原理 动态联编和静态联编纯虚函数和抽象类C11的final override关键字重载 隐藏 重写的区别 多态 1.派生类中定义虚函数必须与基类中的虚函数同名外,还必须同参数表,同返回类型。 否则被认为是同名覆盖,不具有多态性。 如基类中…

NCI Architecture

2.1 组成部分 NCI 可分为以下逻辑组件:  NCI 核心 NCI 核心定义了设备主机 (DH) 和 NFC 控制器 (NFCC) 之间通信的基本功能。 这使得 NFCC 和 DH 之间能够进行控制消息(命令、响应和通知)和数据消息交换。  传输映射 传输映射定义 N…

Excel百万级别数据的导入和导出【详细代码】

代码层级结构 DurationAspect package com.zhouyu.aspect;import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.A…

MFC 截图功能实现(2)

上篇文章里面所用的截图是点击按钮就截取当前打开的界面,链接: MFC 截图功能实现_春蕾夏荷_728297725的博客-CSDN博客 这里所用的截图是可以选中区域,另存为目录等的操作: 效果: 选中区域: 菜单&#xf…

javaee 任务调度,定时任务 多个任务同时执行

错误的写法 如果按照下图的写法,两个任务不会同时执行,因为是一个线程,两个任务是串行的关系。 可以看到第二个任务是等第一个任务执行完以后,才执行的。 正确的写法 使用线程池,为每一个任务创建一个线程 可以看…

Markdown中使用 LaTeX 编辑数学公式

Markdown中使用 LaTeX 编辑数学公式 1 介绍TeX(计算机排版系统)LaTeX(TeX宏集)KaTeX 和 MathJax 2 注意点单双美元符号包裹问题KaTeX 有些不支持 3 语法保留字符希腊字母希伯来字母二元运算符二元关系符几何符号逻辑符号集合符号箭…

Linux下一切皆文件的理解

目录 一. 回顾上文 Linux底层进程和被打开文件的映射关系图: Linux部分源代码示意图如下: ​编辑 二.Linux下一切皆文件的核心理解 一. 回顾上文 在前两篇文章中,我论述了Linux系统中关于文件基础IO的一些内容: 1.有关于文件…

RT-Thread-05-空闲线程和两个常用的钩子函数

空闲线程和两个钩子函数 空闲线程是一个比较特殊的系统线程,它具备最低优先级,当系统中无其他就绪线程可运行时,调度器将调度到空闲线程;空闲线程还负责一些系统资源回收以及将一些处于关闭状态的线程从线程调度列表中移除&#x…

Nautilus Chain:模块化Layer3架构为RWA赛道构建基础设施

DeFi Summer后,加密行业经历了新一轮的爆发、增长后,整体的发展逐渐陷入滞缓。传统金融是一个经过了上百年发展的成熟市场,将800万亿美元体量的传统金融不断引入到链上有望推动加密行业迎来新一轮的质变。将传统资产以加密代币化的形式引入到…

【从零开始学习JAVA | 第十七篇】抽象类与抽象方法

目录 前言: 抽象类与抽象方法: 抽象类: 抽象方法: 特点: 抽象类 抽象方法 注意事项 抽象类 与 抽象方法的意义 抽象类 抽象方法 前言: 在之前,如果我们要构建两个相同类型的类的时候&…

【C++】泛型编程——模板进阶

文章目录 前言1. 模板参数的分类2. 非类型模板参数2.1 非类型模板参数的概念2.2 铺垫2.2 非类型模板参数的使用2.4 注意2.5 array的了解 3. 模板的特化3.1 概念3.2 函数模板特化3.3 类模板特化3.3.1 全特化3.3.2 偏特化部分特化参数更进一步的限制 4. 模板分离编译4.1 什么是分…

基于TF-IDF算法个人文件管理系统——机器学习+人工智能+神经网络(附Python工程全部源码)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 词频计算与数据处理3. 数据计算与对比验证 系统测试工程源代码下载其它资料下载 前言 本项目旨在通过应用TF-IDF算法,将新下载的课件进行自动分类整理。我们的方法是通过比较新文件中的…

Matlab统计分析-相关系数

统计分析-相关系数 相关系数 (pearson与spearman) 皮尔逊 person相关系数和斯皮尔曼spearman等级相关系数,它们可用来衡量两个变量之间的**(线性)**相关性的大小,根据数据满足的不同条件,我们要选择不同的相关系数进行计算和分析。 基础概…

C生万物 | 常见的六种动态内存错误

学习过C语言中的动态内存函数,例如【malloc】、【calloc】、【realloc】、【free】,那它们在使用的过程中会碰到哪些问题呢,本本文我们一起来探讨下~ 1、对NULL指针的解引用操作 代码: void test() {int *p (int *)malloc(INT_…

Sui链上事务处理概述

Sui通过其混合式交易处理方法,实现比其他区块链更快速和高效的性能。这种方法使得Sui的交易测试吞吐率达到每秒297,000次。从实际应用的角度来看,使用Sui的用户在apps和游戏中几乎能够获得实时响应。 在区块链世界中,交易是apps运作的基础&a…

AutoHotKey脚本的循环:While和Loop

While AHK提供三种循环方法,分别是Loop, While和For,其中While和For在其他语言中都很常见,下面通过while循环,实现一个鼠标框选矩形尺寸的脚本 ; 来自官网的案例 CoordMode "Mouse", "Screen"~LButton:: {M…

【文献分享】基于感知质量的滚动优化无人机导航

论文题目:Perception-aware Receding Horizon Navigation for MAVs 作者:Zhang, Zichao ; Scaramuzza, Davide 作者机构:苏黎世大学 论文链接:https://files.ifi.uzh.ch/rpg/website/rpg.ifi.uzh.ch/html/docs/ICRA18_Zhang.pd…

【雕爷学编程】Arduino动手做(122)---BH1750光照传感器

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…