Node server Multer req.files пуст.

Я пытался загрузить несколько изображений на свой сервер Node js с помощью метода массива multer, и я прочитал и попробовал около 20 различных способов, но безуспешно. Я загружаю через iOS, используя метод .upload Alamofire, который генерирует multipart/form-data для тела http. Я могу успешно загрузить одно изображение, но не массив.

iOS-часть

Alamofire.upload(
        multipartFormData: { multipartFormData in
            for img in images {
                guard let imageData = UIImageJPEGRepresentation(img, 0.25) else { 
                    return 
                }
                multipartFormData.append(imageData, withName: "photo")
            }
    },

маршрут.js

var upload = multer({
    dest: './jobs',
    limits: (40 * 1024 * 1024), // (MB * kb * bytes)
    storage: multer.memoryStorage()
});

router.post("/xyz/:id/upload", upload.array('photo'), function (req, res) { //  upload.single('photo')
    console.log("POST to job photo upload route \n");
    const mDy = new Date().toLocaleDateString(format, dateOptions);
    var filePath = String("xyz/" + req.params.id + " " + mDy + ".jpg");
    var writeStream = fs.createWriteStream(filePath);

    req.pipe(writeStream);
    console.log(req.files);

    req.on('end', () => {
        res.send(201, "photos saved");
        console.log("photos saved");
    });

});

person Kevin B    schedule 26.06.2018    source источник
comment
Таким образом, используя upload.array('photo'), я могу получить данные в req.body, но они не отображаются в виде массива.   -  person Kevin B    schedule 26.06.2018


Ответы (1)


Смог решить эту проблему, отсутствовал

fileName: "photo.jpg"

атрибут в этой строке:

multipartFormData.append(imageData, fileName: "photo.jpg", withName: "photo")
person Kevin B    schedule 02.07.2018
comment
Спасибо! Это помогло почти через 2 года - person Jamie S; 02.03.2020