我正在使用 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
的新文件,它将替换这两个文件。
您可以列出文件夹中的文件并删除同名文件。 您可以使用 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);
}
});
});