使用node / express在req.body中的html multipart / form-data错误

时间:2015-03-11 14:36:40

标签: html node.js forms express

我正在使用node,express,html,我正在尝试使用html表单发布到我的服务器端。 问题是我得到{}作为我的req.body。

我的html表单如下:

    <form method = 'post' action='get_name' enctype="multipart/form-data">
      <input type="text" name="form_name"><br>
      <input type="submit" value="Upload name">
    </form>

我在我的node.js文件的开头使用以下内容:

app.use(bodyParser.urlencoded({limit:'5mb', extended:false}));
app.use(busboy());

我的app.post如下:

app.post('/get_name',function(req, res, next){
        console.log("the name of the form is : ", req.body);
        res.redirect('/admin');
});

当我想要获取req.body.form_name时,我得到了未定义。我无法找出我的代码有什么问题。欢迎任何建议。 :)

3 个答案:

答案 0 :(得分:3)

如果你打算使用busboy,你应该遵循文档:

https://github.com/mscdex/busboy

否则,bodyParser()不支持多部分表单数据。我个人推荐这个库,因为它很简单:

https://www.npmjs.com/package/multer

这将以您打算使用它的方式填充req.body。

答案 1 :(得分:0)

将connect-multiparty模块用于multipart / form-data,并将其添加到API路由的中间件中。

let multipart = require('connect-multiparty');
let multipartMiddleware = multipart();

 router.route('/customer').post(validate(validations.customerValidation.registerCustomer),multipartMiddleware,CONTROLLER.CustomerBaseController.registerCustomer);

它正在我这边工作。

答案 2 :(得分:-3)

试试这个:

app.post('/get_name',function(req, res, next){
        console.log("to name of the form is : ", req.param('form_name'));
        res.redirect('/admin');
});