首页 > 编程语言 >nodejs下载URL地址的文件后保存以及删除指定文件夹的操作

nodejs下载URL地址的文件后保存以及删除指定文件夹的操作

时间:2024-01-28 19:46:25浏览次数:28  
标签:nodejs URL 文件夹 dir error download path local 下载

这里下载文件用了axios去下载

下载:

public async download_from(url, fileName) {
    return new Promise(async (resolve, reject) => {
      const download_dir = path.join(
        process.cwd(),
        AppConfig.config.download_file_path,
        this._job_id
      );
      const local_path = path.join(download_dir, fileName);
      //下载文件到指定的文件夹路径下,如果没有的话就创建一下
      if (!fs.existsSync(download_dir)) {
        fs.mkdirSync(download_dir, { recursive: true });
      }
      const fileWriter = fs.createWriteStream(local_path);
      console.log(`文件:${local_path}开始下载,地址是:${url}`);
      try {
        const response = await axios.get(url, { responseType: "stream" });
        if (response.status === 200) {
          response.data.pipe(fileWriter);
          fileWriter.on("finish", () => {
            console.log(`文件:${local_path}下载完成`);
            fileWriter.close();
            resolve(local_path);
          });
        } else {
          console.log(`文件:${local_path}下载出错:${response}`);
          reject(`Error: ${response}`);
        }
      } catch (error) {
        console.log(`文件:${local_path}下载异常:${error}`);
        reject(`Error: ${error}`);
      }
    });
  }

删除文件夹:

/**
   * 这里场景是可能你需要下载后上传到某个目录,然后删除这个下载文件存储的临时文件夹,
   * @param download_file_path 下载后存储的地址
   */
  public del_local_file(download_file_path) {
    try {
      //本次任务下载的文件夹
      const download_dir = path.join(
        process.cwd(),
        download_file_path,
        this._job_id
      );
      //下载上传后删除服务上的临时文件夹
      fs.rmdir(download_dir, { recursive: true }, (err) => {
        if (err) {
          Logger.INSTANCE.error("Error removing folder:", err);
          throw err;
        } else {
          Logger.INSTANCE.info("Folder removed successfully", download_dir);
        }
      });
    } catch (error) {
      Logger.INSTANCE.error("del_local_file_error:", error);
      throw error;
    }
  }

 

标签:nodejs,URL,文件夹,dir,error,download,path,local,下载
From: https://www.cnblogs.com/llcdbk/p/17993194

相关文章

  • 为什么nodejs使用forEach下载不是同步下载,使用for却可以同步下载
    这是因为 JavaScript 的 Array.prototype.forEach 方法是同步的,但它不会等待回调函数的异步操作。当你在 forEach 的回调函数中使用异步操作(例如,Node.js 中的下载操作)时,forEach 会立即启动所有操作,而不会等待它们完成。相反,for 循环可以与 async/await 一起使用,以便在......
  • curl支持ssl报错:(60) SSL certificate problem: unable to get local issuer certific
     curl去访问https的站点报错:curl-vhttps://www.baidu.com*SSLv3,TLShandshake,Clienthello(1):*SSLv3,TLShandshake,Serverhello(2):*SSLv3,TLShandshake,CERT(11):*SSLv3,TLSalert,Serverhello(2):*SSLcertificateproblem:unabletogetl......
  • 解决 curl 无法获取本地发行者证书问题
    问题当使用curl命令打开HTTPS网站,比如:curl-sSLhttps://www.github.com/显示如下错误:curl:(60)SSLcertificateproblem:unabletogetlocalissuercertificate根据错误信息可以得知,问题是curl找不到本地的CA证书所导致。解决方案首先,下载CA证书:https:......
  • NodeJS Express实现所有页面Http访问重定向跳转为Https
    要在Node.jsExpress中实现所有页面从HTTP访问跳转到HTTPS,你可以使用重定向中间件。以下是一个简单的示例:首先,确保你已经安装了Express和express-redirect中间件。如果没有,你可以通过npm进行安装:npminstallexpressexpress-redirect然后,在你的主应用程序文件(例如app.js)中,引入Expr......
  • git空文件夹问题
    git在使用gitstatus时是不会显示空文件的,同时它也不能被放入暂存区 当我向空文件(first)加入文件时此时才可以将first放入暂存区......
  • nodejs雪花ID算法(SnowflakeID)
    前言项目中常使用的三种id类型,分别是自增id、uuid、雪花id,这三种各有优劣。本篇主要实现nodejs中snowflake算法的代码。一、Snowflake实现这里需要加入big-integer的模块,下载npminstall--save big-integervarSnowflake=(function(){functionSnowflake(_......
  • nodejs带图标的二维码
    前言实现用nodejs生成二维码一、生成二维码先下载qrcode模块,可以使用npminstall--saveqrcode/**@paramstext文本数据@paramscallback回调函数*/vargetQrcode=function(text,callback){constoptions={width:256,height:256,......
  • nodejs实现文件上传
    前言随着前端的发展,本属于后端需要处理的一些功能模块也逐渐可以让前端实现。本篇大致记录一下文件上传功能。一、上传文件这里使用express+multer框架constpath=require('path')constfs=require('fs')constexpress=require('express');//4.18.2constmulter=r......
  • nodejs消费rabbitmq队列消息
    index.jsvaramqp=require('amqplib/callback_api');constMyConsume=require('./MyConsume');amqp.connect('amqp://name:password!@localhost:5672/vhost',function(error0,connection){if(error0){throwerror......
  • Nodejs Http 阻塞业务接口 压测
    consthttp=require('http');//创建一个HTTP服务器constserver=http.createServer((req,res)=>{//设置响应头res.writeHead(200,{'Content-Type':'application/json'});//定义接口路径if(req.url==='/index'){......