Multer 覆盖具有相同名称但不同扩展名的文件

问题描述 投票:0回答:1

我正在使用 multer 进行文件上传。在文件夹中,如何使新文件覆盖具有相同名称但可能不同扩展名的现有文件? 此代码仅适用于同名:

  filename: (req, file, cb) => {
  const originalFilename = file.originalname;
  const extension = originalFilename.substring(originalFilename.lastIndexOf('.') + 1);
  const uniqueFileName = `${originalFilename }.${extension}`;
  cb(null, uniqueFileName);
},

因此,如果文件夹中存在名为

pic.png
pic.jpg
的现有文件,并且上传了名为
pic.pdf
的新文件,它将替换这两个文件。

javascript node.js multer
1个回答
0
投票

您可以列出文件夹中的文件并删除同名文件。 您可以使用 fs.readdir 或 fs.readdirSync 方法。 fs 包含在 Node.js 核心中,因此无需安装任何东西。这样做的缺点是,如果文件夹中有太多文件,则可能需要时间,但如果可以以异步方式完成此任务,则可能不是问题。

    const testFolder = './tests/';
    const fs = require('fs');
    fs.readdir(testFolder, (err, files) => {
      files.forEach(file => {
        console.log(file);
        if(file.substring(0,file.lastIndexOf(".") == fileName){
        var filePath = 'c:/book/' + file; 
        fs.unlinkSync(filePath);
    }
      });
    });
© www.soinside.com 2019 - 2024. All rights reserved.