Используется фильтр в фильтре при загрузке изображений / файлов. КОД
Route.filter('upload', async (req, res, next, path, ...fields) => {
let upload = multer({
storage: multer.diskStorage({
destination: (r, f, c) => {
console.log("Field --> ", f.fieldname);
if (f.fieldname === 'insurance_image' || (f.fieldname === 'other_insurance_images') || f.fieldname === 'insurance_image') {
c(null, 'app/storage/images/driver/vehicle/insurance');
} else if (f.fieldname === 'registration_front_image' || f.fieldname === 'registration_back_image'
|| (f.fieldname === 'other_registration_images')) {
c(null, path + '/registration');
} else {
c(null, path);
}
},
filename: (r, f, c) => c(null, `${AdminBaseController.randomNumber(10) + Date.now().toString()}.${f.originalname.split('.')[f.originalname.split('.').length - 1]}`)
})
}).fields(
fields.map(v => {
return {name: v, maxCount: 50}
}))
;
await upload(req, res, () => {
next()
})
});
Проблема возникает из-за загружаемых размеров изображения. Правильная последовательность того, что я загрузил, приведена ниже:
[ { fieldname: 'file',
originalname: 'file1.jpeg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'public/uploads',
filename: 'file1.jpeg',
path: 'public/uploads/file1.jpeg',
size: 79299 } ]
[ { fieldname: 'file',
originalname: 'file2.jpeg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'public/uploads',
filename: 'file2.jpeg',
path: 'public/uploads/file2.jpeg',
size: 177608 } ]
[ { fieldname: 'file',
originalname: 'file3.jpeg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'public/uploads',
filename: 'file3.jpeg',
path: 'public/uploads/file3.jpeg',
size: 117312 } ]
Во время получения console.log (req.files.other_insurance_images) я получил неверную последовательность.
Что я ожидаю: ['file1 .jpeg ',' file2.jpeg ',' file3.jpeg '] Что я получил: [' file1.jpeg ',' file3.jpeg ',' file2.jpeg ']