Multer fields не работает с Express Middleware Routing Middleware - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь загрузить несколько файлов, используя данные формы. В серверной части (узел с express) я пытаюсь получить доступ к именам полей Dynami c для загрузки файлов, используя formidable .

  1. route: '/ photos / upload-test' работает без проблем.
  2. route: '/ photos / upload' не работает, так как я пытаюсь получить форму поля динамически.

Есть ли проблемы в коде маршрута '/ photos / upload'? Пожалуйста, помогите мне.

var express = require('express')
var multer = require('multer')
const formidable = require('formidable')
var app = express()

let fs = require('fs-extra');

let upload = multer({
    storage: multer.diskStorage({
        destination: (req, file, callback) => {
            let path = `uploads/`;
            fs.mkdirsSync(path);
            callback(null, path);
        },
        filename: (req, file, callback) => {
            //originalname is the uploaded file's name with extn
            console.log(file.originalname)
            callback(null, file.originalname);
        }
    })
});

upload_multiple = (req, res, next) => {
    let f_names = [];

    new formidable.IncomingForm().parse(req)
        .on('file', (name, file) => {
            f_names.push({ name: name });
        })
        .on('end', () => {
            req.photoNames = [];
            req.photoName = f_names;
            next()
        });
}

upload_data = (req, res, next) => {
    console.log(req.photoName);
    upload.fields(req.photoName)
}


var cpUpload = upload.fields([{ name: 'photos_1' }, { name: 'photos_2' }])

app.post('/photos/upload-test',
    cpUpload,
    function (req, res, next) {
        res.send({ files: req.files, body: req.body })
    }
);
app.post('/photos/upload',
    upload_multiple,
    upload_data,
    function (req, res, next) {
        console.log("Yes" + req.photoName)
        res.send({ files: req.files, body: req.body })
    }
);
app.listen(5555);
...