gpt4 book ai didi

node.js - 使用 Multer 在 NodeJs 中上传文件,如果文件已存在则更改名称

转载 作者:太空宇宙 更新时间:2023-11-03 22:13:06 25 4
gpt4 key购买 nike

我需要将文件从客户端上传到 Node 服务器(我使用 Multer 来执行此任务)。

要求是,如果服务器上已存在同名文件,我需要更改新文件的名称。我使用 Node fs.stat 检查是否存在同名文件。

我一定做错了什么,因为 fs.stat 总是告诉我没有同名的文件,而实际上它是存在的(我最终用新文件覆盖了旧文件)。

这是代码。

       var imagesDirectory = 'images';
var imageDir = '/' + imagesDirectory + '/';
var storageDisk = multer.diskStorage({
destination: imagesDirectory,
filename: function (req, file, callback) {
let uploadedFileName;
fs.stat(imageDir + file.originalname, function(err, stat) {
if (err==null) {
uploadedFileName = Date.now() + '.' + file.originalname;
} else if(err.code == 'ENOENT') {
uploadedFileName = file.originalname;
} else {
console.log('Some other error: ', err.code);
}
callback(null, uploadedFileName)
});
}
})
var uploadImage = multer({ storage: storageDisk, limits: {fileSize: 1000000, files:1}, }).single('imageFile');
router.post('/image', function(req, res) {
uploadImage(req, res, function (err) {
if (err) {
// An error occurred when uploading
console.log(err);
}
// do something to prepare the response and send it back to the client
prepareResponseAndSendItBack(req.file.filename, imageDir, res, err);
})
})

最佳答案

我相信 fs.exists 更适合该任务。

fs.exists(imageDir + file.originalname, function(exists) {
let uploadedFileName;
if (exists) {
uploadedFileName = Date.now() + '.' + file.originalname;
} else {
uploadedFileName = file.originalname;
}
callback(null, uploadedFileName)
});

还要确保传递文件的完整路径(或当前文件的相对路径)

关于node.js - 使用 Multer 在 NodeJs 中上传文件,如果文件已存在则更改名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36648395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com