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) { 
    // ... 
}); 
+0

@Skatebail多次使用它应该没问题。如果'_method'对两者都可用,则应该将相同的值设置为'req.method'。除非你的应用程序设法为'_method'设置了2个值。 –

+0

非常感谢你,无论是为你的帮助和时间,它都在努力! – michaeltintiuc