在 Node.JS 中获取 http post 表单数据
Posted
技术标签:
【中文标题】在 Node.JS 中获取 http post 表单数据【英文标题】:Getting http post form data in Node.JS 【发布时间】:2017-12-14 12:32:45 【问题描述】:嘿,我正在尝试使用 express 和 node 发送发布请求,这是我的代码。
index.html
<html>
<head>
<title>Test</title>
</head>
<body>
<form action="/form" method="POST" enctype="multipart/form-data">
<input type="text" name="imagename"></input>
<input type="submit" name="submit" value="submit"></input>
</form>
</body>
</html>
我的 app.js 文件如下:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded(
extended: true
));
app.use(bodyParser.json());
app.post('/form', function(req, res)
res.setHeader('Content-Type', 'application/json');
setTimeout(function()
res.send(JSON.stringify(
imagename: req.body.imagename || null
));
, 1000);
);
现在我应该将输出作为 imagename: //value 添加到表单中,如果为真,否则为空。而且我总是得到一个空值。我试图记录 req.body.imagename 的值,但我得到的是未定义的,而不是我在表单中插入的值。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:您必须将body-parser
添加到您的 Express 应用中。
var app = express();
var bodyParser = require('body-parser');
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded( extended: false ));
// parse application/json
app.use(bodyParser.json());
但是,我看到您使用enctype='multipart/formdata'
声明了您的表单。这通常用于进行文件上传,如果确实需要,则需要使用another parser。
【讨论】:
我正在尝试添加一个文件,所以我使用了 multipart/formdata。我已经包含了bodyparser的两行,只是忘了在这里复制。但是因为没有任何工作,我认为首先让文本工作,然后我会查看文件并评论文件上传部分。谢谢。 @JonathanLonowski 和 Edmundo Rodrigues 非常感谢您的反馈。当我从表单中删除多部分时,我能够发送数据。现在我将尝试使用 mulder 并希望它适用于这些文件。干杯。【参考方案2】:您需要 'body-parser'
中间件,但忘记在您的 express
应用程序中使用它。
app.use(bodyParser.urlencoded())
你不需要这个
enctype="multipart/form-data"
【讨论】:
我的代码中已经有了 app.use(bodyParser.urlencoded()) 只是忘了复制到这里。我需要第二部分,因为我将来会使用文件上传。以上是关于在 Node.JS 中获取 http post 表单数据的主要内容,如果未能解决你的问题,请参考以下文章