Ваша проблема в том, что при запуске приложения оно генерирует новый uuid (один раз - при запуске приложения) и передается в виде строки методу diskStorage
.
Но вы хотите генерировать этот путь каждый раз, когда загружаете файл.
Итак, вот решение:
Multer имеет функцию для динамического генерации оба путь назначения и имя файла .
Итак, вам нужно передать функцию , которая будет генерировать путь и вернуть его в обратный вызов .
Пример после прочтения этого руководства :
let storage = multer.diskStorage({
// pass function that will generate destination path
destination: (req, file, cb) => {
// initial upload path
let destination = path.join(__dirname, 'uploads'); // ./uploads/
// if user logged in and You store user object in session
if (req.session && req.session.user && req.session.user.id) {
destination = path.join(destination, 'users', req.session.user.id, uuidv1()); // ./uploads/users/8/generated-uuid-here/
}
else {
destination = path.join(destination, 'files', uuidv1()); // ./uploads/files/generated-uuid-here/
}
cb(
null,
destination
);
},
// pass function that may generate unique filename if needed
filename: (req, file, cb) => {
cb(
null,
Date.now() + '.' + path.extname(file.originalname)
);
}
});