如何从Node.js中的HTTP post方法中提取表单数据(form[method="post"])和文件上传?
我看了文件,谷歌了一下,什么都没找到。
function (request, response) {
//request.post????
}
有图书馆或黑客吗?
如何从Node.js中的HTTP post方法中提取表单数据(form[method="post"])和文件上传?
我看了文件,谷歌了一下,什么都没找到。
function (request, response) {
//request.post????
}
有图书馆或黑客吗?
当前回答
你可以使用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的输入字段,你可以使用变量post访问它:
console.log(post.age);
其他回答
您可以使用“request - Simplified HTTP client”和Javascript Promise轻松地发送和获取POST请求的响应。
var request = require('request');
function getData() {
var options = {
url: 'https://example.com',
headers: {
'Content-Type': 'application/json'
}
};
return new Promise(function (resolve, reject) {
var responseData;
var req = request.post(options, (err, res, body) => {
if (err) {
console.log(err);
reject(err);
} else {
console.log("Responce Data", JSON.parse(body));
responseData = body;
resolve(responseData);
}
});
});
}
如果它涉及文件上传,浏览器通常以“multipart/form-data”内容类型发送它。 您可以在这种情况下使用它
var multipart = require('multipart');
multipart.parse(req)
参考1
参考2
1)从npm安装body-parser。
2)然后在app.ts中
var bodyParser = require('body-parser');
3)然后你需要写
app.use(bodyParser.json())
在app.ts模块中
4)记住你要包括
app.use(bodyParser.json())
在任何模块声明的顶部或之前。
Ex:
app.use(bodyParser.json())
app.use('/user',user);
5)然后使用
var postdata = req.body;
如果你不想使用整个框架,如Express,但你也需要不同种类的表单,包括上传,那么formaline可能是一个不错的选择。
它列在Node.js模块中
对于任何想知道如何在不安装web框架的情况下完成这个微不足道的任务的人,我设法把它放在一起。几乎没有生产准备,但它似乎工作。
function handler(req, res) {
var POST = {};
if (req.method == 'POST') {
req.on('data', function(data) {
data = data.toString();
data = data.split('&');
for (var i = 0; i < data.length; i++) {
var _data = data[i].split("=");
POST[_data[0]] = _data[1];
}
console.log(POST);
})
}
}