【问题标题】:How to delete files with NodeJS? [duplicate]如何使用 NodeJS 删除文件? [复制]
【发布时间】:2022-01-10 22:28:14
【问题描述】:

我有两个异步函数:

  1. 用于在 PostgreSQL 中创建对象并上传在此对象中命名的文件。
  2. 另一个用于删除此实体并从文件夹中删除文件。

我不知道如何从 PostgreSQL 实体中提取文件名并删除我的“静态”文件夹中的某些文件

PostgreSQL 中的实体看起来像:

Car:
  {
   'name': 'Nissan 350Z',
   'description': 'new',
   'image': '123wejdsefberfkj.jpg',
   'video': '23rusdjf8ioysdfs.mp4'
  }

创建函数:

在这里,我从表单数据中获取文件,为文件创建唯一名称并将其保存在 PostgreSQL 中,然后将文件保存在“静态”文件夹中。

 let videoName = uuid.v4() + '.mp4';
 let imageName = uuid.v4() + '.jpg';
 let {name,description} = req.body;
 const {video, image} = req.files; 
 const car = await Car.create( {name, description, video: videoName,image: imageName})
                .then(video.mv(path.resolve(__dirname,'..', 'static', videoName)))
                .then(image.mv(path.resolve(__dirname,'..', 'static', imgName)))

删除函数:

这里我需要从数据库中提取文件名并从文件夹中删除它们

有点伪代码:

async delete(req, res) {
        try {
            const {id} = req.params;
            await Car.findOne({where:{id}})
                .then( async data => {
                    if(data) {
                        await let videoName = Car.@extract_video_name@ ({where: {id}})
                              .then(mv(path.delete(__dirname,'..','static',videoName)))
                        await Car.destroy({where:{id}}).then(() => {
                            return res.json("Car deleted");
                        })
                    } else {
                        return res.json("This Car doesn't exist in database");
                    }
                })
            
        } catch (e) {
            console.error(e)
        }
    }

【问题讨论】:

标签: node.js postgresql


【解决方案1】:

您可以使用 fs,使用 const fs = require('fs'); 要求它

您没有要安装的 npm 包,它包含在 node.js 中。

这是允许您通过创建文件夹(如果不存在)并将文件上传到其中来将文件保存到目录中的代码

  let path = String(`./directoryName/${fileName}`);
    fs.mkdirSync('./directoryName', { recursive: true });
    fs.writeFileSync(path, data);

您可以使用删除文件

  fs.unlink(path, (err) => {
  if (err) throw err //handle your error the way you want to;
  console.log('path/file.txt was deleted');//or else the file will be deleted
    });
  );

参考:https://nodejs.org/api/fs.html

【讨论】:

  • fs 不需要安装
  • 你说得对,它包含在 node.js 中。
猜你喜欢
  • 1970-01-01
  • 2012-12-22
  • 2020-06-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2019-08-26
  • 2015-03-13
相关资源
最近更新 更多