Nodejs Express - methodOverride не работает для multipart/form-data
Я заметил, что если я отправлю форму с enctype="multipart/form-data"
который имеет скрытый вход _method установлен в PUT
функция methodOverride не сработает, в результате чего 404 POST
для этого маршрута.
Настройка:
app.use(express.json());
app.use(express.urlencode());
...
app.use(express.methodOverride());
app.use(express.router());
app.put('/update', express.multipart(), function(req, res) { ... });
если я изменяю поставить на пост в роутере все работает просто отлично. Также ставьте и удаляйте работы в других маршрутах, которые не имеют enctype="multipart/form-data"
отправил им.
Я попытался изменить порядок промежуточного программного обеспечения, но безуспешно.
Любая помощь будет высоко оценена, так как поиск этой проблемы ни к чему не приведет!
Заранее спасибо!
1 ответ
За methodOverride()
чтобы иметь возможность использовать значение _method
, это нужно req.body
чтобы уже были определены 1 из 3 парсеров тела - json()
, urlencoded()
, а также multipart()
,
app.use(express.multipart());
app.use(express.methodOverride());
Если вы хотите использовать multipart()
с methodOverride()
для выбора маршрутов вы можете использовать app.all()
маршрут с промежуточным ПО и вызовом next('route')
так что он продолжает намеченный маршрут.
app.all('/update',
express.multipart(),
express.methodOverride(),
function (req, res, next) { next('route'); }
);
app.put('/update', function (req, res) {
// ...
});