Nodejs Express - methodOverride不适用于多部分/表单数据
问题描述:
我注意到,如果我提交的表单的enctype="multipart/form-data"
隐藏_method输入设置为PUT
,methodOverride函数将不会触发,导致该路由的404 POST
。如果我改变把到后路由器一切工作只是罚款Nodejs Express - methodOverride不适用于多部分/表单数据
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"
的工作。
我试着改变中间件的顺序,但没有运气。
任何帮助将不胜感激,因为googling这个问题没有任何结果!
在此先感谢!
答
对于methodOverride()
到能够使用的_method
值时,它需要向req.body
已经已经由3个体解析器的1所定义 - json()
,urlencoded()
,并multipart()
。
如果你想使用multipart()
与methodOverride()
的选择路线,你可以使用一个app.all()
route既中间件,并呼吁next('route')
所以继续按预定航线。
app.all('/update',
express.multipart(),
express.methodOverride(),
function (req, res, next) { next('route'); }
);
app.put('/update', function (req, res) {
// ...
});
@Skatebail多次使用它应该没问题。如果'_method'对两者都可用,则应该将相同的值设置为'req.method'。除非你的应用程序设法为'_method'设置了2个值。 –
非常感谢你,无论是为你的帮助和时间,它都在努力! – michaeltintiuc