如何在Node.js中提取POST数据?
你如何提取表单数据( form[method="post"]
)和从Node.js中的HTTP POST
方法发送的文件上传?
我已阅读文档,搜索了一下,没有发现任何东西。
function (request, response) {
//request.post????
}
有图书馆还是黑客?
如果您使用Express(Node.js的高性能,高级Web开发),则可以这样做:
HTML:
<form method="post" action="/">
<input type="text" name="user[name]">
<input type="text" name="user[email]">
<input type="submit" value="Submit">
</form>
JavaScript的:
app.use(express.bodyParser());
app.post('/', function(request, response){
console.log(request.body.user.name);
console.log(request.body.user.email);
});
2016年6月1日更新:
上面的方法已被弃用现在使用:
const bodyParser = require("body-parser");
/** bodyParser.urlencoded(options)
* Parses the text as URL encoded data (which is how browsers tend to send form data from regular forms set to POST)
* and exposes the resulting object (containing the keys and values) on req.body
*/
app.use(bodyParser.urlencoded({
extended: true
}));
/**bodyParser.json(options)
* Parses the text as JSON and exposes the resulting object on req.body.
*/
app.use(bodyParser.json());
app.post("/", function (req, res) {
console.log(req.body.user.name)
});
你可以使用querystring
模块:
var qs = require('querystring');
function (request, response) {
if (request.method == 'POST') {
var body = '';
request.on('data', function (data) {
body += data;
// Too much POST data, kill the connection!
// 1e6 === 1 * Math.pow(10, 6) === 1 * 1000000 ~~~ 1MB
if (body.length > 1e6)
request.connection.destroy();
});
request.on('end', function () {
var post = qs.parse(body);
// use post['blah'], etc.
});
}
}
现在,例如,如果您有一个名称为age
的input
字段,则可以使用变量post
来访问它:
console.log(post.age);
如果有人试图淹没您的RAM,请确保终止连接!
var qs = require('querystring');
function (request, response) {
if (request.method == 'POST') {
var body = '';
request.on('data', function (data) {
body += data;
// 1e6 === 1 * Math.pow(10, 6) === 1 * 1000000 ~~~ 1MB
if (body.length > 1e6) {
// FLOOD ATTACK OR FAULTY CLIENT, NUKE REQUEST
request.connection.destroy();
}
});
request.on('end', function () {
var POST = qs.parse(body);
// use POST
});
}
}
链接地址: http://www.djcxy.com/p/22143.html