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');
    });
});

      

原文地址:https://www.cnblogs.com/jakii/p/5136502.html