express中的表单处理
此篇文章主要介绍node框架express中表单处理相关细节,一些常识不再说
(1)基础:表单的name属性很重要,后端代码根据这个属性获取数据
(2)表单编码方式:一般默认:application/x-wwwform-urlencoded
上传文件:multipart/form-data
(3)后端代码处理表单请求的方式一般是重定向
(4)express表单处理:
①如果使用 GET 进行表单处理,表单域在 req.query 对象中。例如,如果有一个名称属性为 email 的 HTML 输入字段,它的值会以 req.query.email 的形式传递到处理程序
②如果使用 POST(推荐使用的),需要引入中间件来解析 URL 编码体。首先,安装 body-parser 中间件(npm install--savebody-parser),然后引入:
app.use(require('body-parser')());
req.body变得可用
③ajax表单请求:
//其中,req.accepts()函数是判断返回类型是html合适还是json合适
app.post('/process', function(req, res){ if(req.xhr||req.accepts('json,html')==='json'){ res.send({success:true}); }else{ res.redirect(303, '/thank_you'); } });
④文件上传:需要引入中间件formidable来处理文件上传问题: npm install --save formidable
然后进行文件处理
app.post('/contest/photo/:year/:month', function(req, res){ var form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files){ if(err) return res.redirect(303, '/error'); console.log('received fields:'); console.log(fields); console.log('received files:'); //files里面有上传文件的各种信息 console.log(files); res.redirect(303, '/thank-you'); }); });