如何从Node.js中的HTTP post方法中提取表单数据(form[method="post"])和文件上传?
我看了文件,谷歌了一下,什么都没找到。
function (request, response) {
//request.post????
}
有图书馆或黑客吗?
如何从Node.js中的HTTP post方法中提取表单数据(form[method="post"])和文件上传?
我看了文件,谷歌了一下,什么都没找到。
function (request, response) {
//request.post????
}
有图书馆或黑客吗?
当前回答
如果你不想把数据和数据回调放在一起,你可以像这样使用可读回调:
// Read Body when Available
request.on("readable", function(){
request.body = '';
while (null !== (request.body += request.read())){}
});
// Do something with it
request.on("end", function(){
request.body //-> POST Parameters as String
});
这种方法修改传入的请求,但是一旦您完成响应,请求就会被垃圾收集,因此这应该不是问题。
如果你害怕巨大的身体,一种先进的方法是先检查身体的大小。
其他回答
如果希望表单数据在req.body中可用,则需要使用bodyParser()。 Body-parser解析您的请求并将其转换为可以轻松提取所需相关信息的格式。
例如,假设在前端有一个注册表单。您正在填写它,并请求服务器将详细信息保存在某个地方。
如果使用体解析器,则从请求中提取用户名和密码如下所示。
.............................................................
var loginDetails = {
username : request.body.username,
password : request.body.password
};
不使用express也可以提取post参数。
1: NMP安装多方
2:导入多方。As var multiparty = require('multiparty');
3: `
if(req.method ==='POST'){
var form = new multiparty.Form();
form.parse(req, function(err, fields, files) {
console.log(fields['userfile1'][0]);
});
}
4:和HTML形式是。
<form method=POST enctype=multipart/form-data>
<input type=text name=userfile1><br>
<input type=submit>
</form>
我希望这对你有用。谢谢。
Node.js 18的现代异步方式,零依赖:
server.mjs:
import { createServer } from 'node:http';
const rawReqToString = async (req) => {
const buffers = [];
for await(const chunk of req){
buffers.push(chunk);
}
return Buffer.concat(buffers).toString();
};
const server = createServer(async (req, res) => {
const object = JSON.parse(await rawReqToString(req));
...
});
server.listen(3000, 'localhost', () => {
console.log(`The server is running.`);
})
如果有人试图淹没你的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
});
}
}
表达v4.17.0
app.use(express.urlencoded( {extended: true} ))
console.log(req.body) // object
演示的形式
另一个答案