Я выполняю загрузку файла в node.js
. Я хочу, чтобы файл каждого пользователя загружался в отдельную папку. Следует создать папку пользователя, если папки не будет, а затем загрузить в нее файл.
Вот мой node.js Api route
router.post('/upload', upload.single("file"), uploadFile);
Вот мой multer
код из multer.config.js
const multer = require('multer');
var storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'uploads')
},
filename: (req, file, cb) => {
cb(null, file.originalname)
}
});
var upload = multer({storage: storage});
module.exports = upload;
Вот моя fileUpload
функция из handler.js
const uploadFolder = 'uploads/';
const fs = require('fs');
const fse = require('fs-extra')
exports.uploadFile = (req, res) => {
let fileName = req.file.filename;
let user = req.body.user.split(' ')[0];
let oldPath = uploadFolder + fileName;
let newDirectoryPath = uploadFolder + user + '/';
let newDestination = uploadFolder + user + '/'+ fileName;
if(!fs.existsSync(newDestination)){
fse.move(oldPath, newDestination,(err)=>{
if (err) {
console.log('error in moving file', err);
}else{
console.log('file moved');
res.json({sucess : true, message : 'File uploaded and moved'});
}
})
}
else if(fs.existsSync(newDestination)){
res.status(201).json({status : 201, sucess : false, message : 'This
file already exists'});
}
}
Сначала я загружаю файл в папку uploads
, а затем перемещаю этот файл из uploads
во вновь созданную папку.
Это нормально работает, если пользователь загружает файл в первый раз. Но если пользователь попытается загрузить тот же файл, он снова загружает этот файл в папку uploads
. Что является нежелательным поведением.
Как я могу решить эту проблему?