键值对,如 name
附加到客户端的表单数据中。XMLHttpRequest
并与要上传的文件一起发送。
如何在使用Node.js的服务器端提取这些值。
浏览器:
formdata = new FormData();
for( var x = 0;x < files.length;x = x+1){
formdata.append('file',files[x]);
}
formdata.append('name',name); //name appended here to form-data
formdata.append('email',email);
formdata.append('reason',reason);
formdata.append('location',location);
var xhr = new XMLHttpRequest();
var url = "/sign_8081";
xhr.open("POST" ,url);
xhr.withCredentials = true;
Node.js服务器:
router.post('/sign_8081', (req, res) => {
console.log("sign 8081called"+JSON.stringify(req.body))
console.log(req.query.name);
console.log(req.body.name); //want name key value in Node.js code
let body = '';
var rb;
req.on('data', chunk => {
body += chunk.toString(); // convert Buffer to string
});
req.on('end', () => {
rb = parse(body)
console.log(rb.name);
});
console.log(req.file.filename)
res.send(req.file.filename)
});
如果你使用的是expressjs,请使用body-parsing中间件,如 express.json()
或 express.urlencoded()
然后你就可以访问表单输入 req.body
.
var app = express()
app.use(express.json()) // for parsing application/json
app.use(express.urlencoded({ extended: true })) // for parsing application/x- www-form-urlencoded
router.post('/sign_8081', (req, res) => {
console.log("sign 8081called"+JSON.stringify(req.body))
console.log(req.query.name);// do not use this
console.log(req.body); // object of inputs
let body = '';
var rb;
req.on('data', chunk => {
body += chunk.toString(); // convert Buffer to string
});
req.on('end', () => {
rb = parse(body)
console.log(rb.name);
});
console.log(req.file.filename)
res.send(req.file.filename)
});
更多关于expressjs的请求对象 expressjs docs