Multipart/form-data с массивами
У меня есть простая форма:
<form method="post" action="/test">
<input type="hidden" name="arr[]" value="val1">
<input type="hidden" name="arr[]" value="val2">
<input type="hidden" name="arr[]" value="val3">
<input type="submit" value="Submit">
</form>
С контроллером:
//...
server.post('/test', function(req, res) {
res.json(req.body);
});
//...
Это возвращает хорошо с:
{
arr: [
"val1",
"val2",
"val3"
]
}
Однако, когда я изменяю enctype на multipart/formdata
<form method="post" action="/test" enctype="multipart/form-data">
<input type="hidden" name="arr[]" value="val1">
<input type="hidden" name="arr[]" value="val2">
<input type="hidden" name="arr[]" value="val3">
<input type="submit" value="Submit">
</form>
Сервер теперь отвечает:
{
arr[]: "val3"
}
В чем проблема? Мне нужна какая-то конфигурация?
Если вам интересно, я также отправляю файл, поэтому мне нужно multipart/form-data
,
1 ответ
Вероятно, это связано с использованием body-parser (особенно urlencoded
метод), который по умолчанию работает на запросы с медиа-типом application/x-www-form-urlencoded
только.
Ваш основной модуль приложения, вероятно, имеет несколько строк, подобных этим:
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded());
Я полагаю, вы могли бы просто добавить следующее, чтобы иметь запросы типа multipart/form-data
разобрал так же:
app.use(bodyParser.urlencoded({
type: 'multipart/form-data'
}));