Проблема заключается в том, что для каждого изображения запроса запускается функция destination
, которая каждый раз создает новый UUID, создавая новую папку для каждого изображения.
Вам необходимо сохранитьUUID в req
заранее, так что вы можете использовать его в функции destination
.Это создаст уникальный каталог для каждого запроса.
const storage = multer.diskStorage({
destination: function (req, file, cb) {
let path = './public/images/' + req.imagesFolder + '/';
file.path = path;
fs.mkdirSync(path);
cb(null, path);
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '.' + mime.extension(file.mimetype));
}
})
const upload = multer({ storage: storage });
И, при использовании промежуточного программного обеспечения:
const preuploadMiddleware = (req, res, next) => {
req.imagesFolder = uuidv4();
next();
};
app.post('/images', preuploadMiddleware, upload, (req res, next) => {
// ...
});