Ответ 1
bodyParser
на самом деле представляет собой состав трех посредников (см. документация и соответствующий исходный код): json
, urlencoded
и multipart
:
-
json
анализируетapplication/json
органы запроса -
urlencoded
анализируетx-ww-form-urlencoded
органы запроса - и
multipart
анализирует тела запросовmultipart/form-data
, что вас интересует.
Если вы укажете только json
и urlencoded
middlewares, данные формы не будут анализироваться каким-либо промежуточным программным обеспечением, поэтому req.body
не будет определен. Затем вам нужно добавить промежуточное программное обеспечение, которое может анализировать данные формы, такие как грозный, busboy или многопартийный (как указано в connect
документации).
Вот пример, используя multiparty
:
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
app.use('/url/that/accepts/form-data', multipartMiddleware);
app.post('/url/that/accepts/form-data', function(req, resp) {
console.log(req.body, req.files);
});
Не забывайте, что, используя такие посредники, вы разрешаете всем пользователям загружать файлы на ваш сервер: тогда ваша ответственность - обрабатывать (и удалять) эти файлы.