мультер не может прочитать несколько файлов

#node.js #ajax #file-upload #multer

#node.js #ajax #загрузка файла #мультер

Вопрос:

Я пытаюсь отправить как массив файлов изображений, так и некоторые входные значения с помощью ajax в код узла js. ajax:

 const addForm = document.querySelector('#addForm');
let fd = new FormData();


addForm.addEventListener('submit', (event) => {

    event.preventDefault();

    const newProduct = {
        Cost: document.getElementById('addPcost').value,
        Size: document.querySelectorAll('[name="size"]:checked')[0].value,
        Material: document.querySelectorAll('[name="material"]:checked')[0].value,
        Color: document.getElementById('addPcolor').value,
        Category: document.querySelectorAll('[name="category"]:checked')[0].value
    }

    imageFiles.forEach(image => {
        fd.append("image", image);
    });
    fd.append("info", JSON.stringify(newProduct));

    $.ajax({
        type: "POST",
        url: "/addproduct",
        dataType: 'json',
        contentType: false,
        processData: false,
        data: fd,
        success: () => {
            Notiflix.Notify.Success("new product added successfully.");
        },
        error: (textStatus, err) => {
            Notiflix.Notify.Failure('<h2>Internal Server Error</h2><br>'   'text status '   textStatus   ', err '   err);
        }
    });

});
 

и это код на стороне узла js:

 app.post('/addproduct', (req, res) => {

    upload(req, res, (err) => {
        if(err) {
            console.log(err);
        }else {
            console.log(req.body);
        }
    });

});
 

ПРИМЕЧАНИЕ: функция загрузки предназначена для multer

когда я отправляю данные, multer возвращает ошибку:

Ошибка MulterError: неожиданное поле

код: ‘LIMIT_UNEXPECTED_FILE’, поле: ‘image’, ошибки хранилища: []

почему это происходит? как я могу загрузить массив файлов изображений и данных формы с помощью ajax в node js? пожалуйста, покажите мне, есть ли лучший способ.

заранее спасибо.

Редактировать: конфигурация multer:

 const storage = multer.diskStorage({

    destination: './public/images',
    filename: (req, file, cb) => {
        cb(null, file.fieldname   '-'   Date.now()   path.extname(file.originalname))
    }

});

const upload = multer({
    storage: storage
}).array("pImg");
 

Комментарии:

1. Можете ли вы добавить Multer конфигурацию в вопрос?

2. Я только что решил проблему. имя массива, которое я использовал для multer, не совпадало с полем FormData. изменил его на image, а затем я изменил req.body.image на req.files, и теперь я получаю результаты. Это была просто глупая ошибка. решение заняло 4 часа. Я опубликовал все коды, кроме той части, которая была сломана. извините.