Неправильные имена при доступе к нескольким именам файлов в req.files, созданных Multer в Node.js - PullRequest
0 голосов
/ 06 марта 2020

Используется фильтр в фильтре при загрузке изображений / файлов. КОД

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 ']

...