как получить дополнительные поля формы в данных формы в сообщении Node.js - PullRequest
0 голосов
/ 26 мая 2020

Пары ключ-значение, такие как name, добавляются к данным формы на стороне клиента XMLHttpRequest и отправляются вместе с файлом для загрузки.

Как я могу извлечь эти значения на стороне сервера, который использует Node.js.

Браузер :

formdata = new FormData();
for( var x = 0;x < files.length;x = x+1){
    formdata.append('file',files[x]);
}
formdata.append('name',name);  //name appended here to form-data
formdata.append('email',email);
formdata.append('reason',reason);
formdata.append('location',location);
var xhr = new XMLHttpRequest();
var url = "/sign_8081";
xhr.open("POST" ,url);
xhr.withCredentials = true;

Node.js Сервер :

router.post('/sign_8081', (req, res) => {
    console.log("sign 8081called"+JSON.stringify(req.body))
    console.log(req.query.name);
    console.log(req.body.name); //want name key value in Node.js code 
    let body = '';
    var rb;
    req.on('data', chunk => {
        body += chunk.toString(); // convert Buffer to string
    });
    req.on('end', () => {      
        rb = parse(body)
        console.log(rb.name);
    });
    console.log(req.file.filename)
    res.send(req.file.filename)                
});

1 Ответ

1 голос
/ 26 мая 2020

Если вы используете expressjs, используйте промежуточное ПО для анализа тела, такое как express.json() или express.urlencoded(), тогда вы можете получить доступ к вводу формы req.body.

   var app = express()

   app.use(express.json()) // for parsing application/json
   app.use(express.urlencoded({ extended: true })) // for parsing application/x-   www-form-urlencoded

    router.post('/sign_8081', (req, res) => {
    console.log("sign 8081called"+JSON.stringify(req.body))
    console.log(req.query.name);// do not use this
    console.log(req.body); // object of inputs
    let body = '';
    var rb;
    req.on('data', chunk => {
        body += chunk.toString(); // convert Buffer to string
    });
    req.on('end', () => {      
        rb = parse(body)
        console.log(rb.name);
    });
    console.log(req.file.filename)
    res.send(req.file.filename)                
});

Подробнее о expressjs объекте запроса expressjs docs

...