Как правильно загрузить файл для каждого пользователя в отдельной папке, используя node.js? - PullRequest
0 голосов
/ 17 января 2019

Я выполняю загрузку файла в 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. Что является нежелательным поведением.

Как я могу решить эту проблему?

...