(十)Express POST COOKIE和SESSION

本节知识点

  • EXPRESS 接受POST 请求

  • EXPRESS 存储COOKIE

  • Express 存储Session

(一)Express 接受POST请求

在Express中接收Post的请求必须用到了一个包,这样简化了操作。这个包叫做formidable

  • 第一步通过 npm install formidable --save 安装他

  • 第二步写下面的代码
    下面是包含图片上传的全部代码。其中包括改名。用到了path.extname

var express = require("express"); //加载模块
var app = express();  //调用模块
var formidable = require('formidable'); //加载模块
var util = require("util");
var path = require("path");
var fs = require("fs");

app.get("/",function(req,res){
    res.sendfile(path.join(__dirname,"/views/index.html"));
});

app.post("/login",function(req,res) {

    //Creates a new incoming form.
    var form = new formidable.IncomingForm();
    //设置文件上传存放地址
    form.uploadDir = "./uploads";
    //执行里面的回调函数的时候,表单已经全部接收完毕了。
    form.parse(req, function (err, fields, files) {
        if (err) {
            throw err;
        }
        //所有的文本域、单选框,都在fields存放;
        //所有的文件域,files
        //console.log(fields);
        //console.log(files);
       // console.log(util.inspect({fields: fields, files: files}));
        console.log(fields.name); //获取到姓名
        console.log(fields.sex); //获取到单选框
        console.log(fields.hobby); //获取到爱好
        var now = new Date().getTime();
        var extname = path.extname(files.tupian.name); //获取到后缀名.jpg 还是png
        var oldpath = __dirname + "/" + files.tupian.path; //老地址
        var newPath =  __dirname + "/uploads/" + "uploads_"+now+extname;
         fs.rename(oldpath,newPath,function(err,res){
             if(err){throw err};
              console.log("改名成功");
         })
        res.send("发送成功");
    })
})
app.use(function(req,res){
    res.status(404).send("没有这个页面!");
})
app.listen(3000);

(二) Express 设置cookie

Express 接受cookie就要用到了一个包叫做 cookie-parser

var express  = require('express');
var cookieParser = require('cookie-parser');

var app = express();
//使用cookie必须要使用cookie-parser中间件
app.use(cookieParser());

app.get("/gonglue",function(req,res){
     var cookie = {"name":"123","sex":224}
    res.cookie("login",cookie,{maxAge: 900000, httpOnly: true});  //写的时候就是res 读的时候就是req
    //清除cookie就是res.clearCookie('login');
    if(req.cookies.login)
     {
         res.send(req.cookies.login.name + "旅游攻略");
     /*
    res.cookie('name', 'koby', { domain: '.example.com', path: '/admin', secure: true });
    cookie的有效期为900000ms
   res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });
   cookie的有效期为900000ms
  res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true });
  cookie的value为对象
res.cookie('cart', { items: [1,2,3] });
res.cookie('cart', { items: [1,2,3] }, { maxAge: 900000 });
res.cookie('name', 'tobi', { signed: true });
domain:cookie在什么域名下有效,类型为String,。默认为网站域名
   expires: cookie过期时间,类型为Date。如果没有设置或者设置为0,那么该cookie只在这个这个session有效,即关闭浏览器后,这个cookie会被浏览器删除。
   httpOnly: 只能被web server访问,类型Boolean。
   maxAge: 实现expires的功能,设置cookie过期的时间,类型为String,指明从现在开始,多少毫秒以后,cookie到期。
   path: cookie在什么路径下有效,默认为'/',类型为String
   secure:只能被HTTPS使用,类型Boolean,默认为false
   signed:使用签名,类型Boolean,默认为false。`express会使用req.secret来完成签名,需要cookie-parser配合使用`
    */
     }else
    {
        res.send("请先登录");
    }
});
app.get("/clearcookie",function(req,res){
     res.clearCookie("login");
    res.send("清除成功");
})

app.listen(3000);

(三) Express 设置Session

  • Express设置Session 要用到一个包叫做 express-session
var express = require("express");
var app = express();
var session = require("express-session");

app.use(session({
    secret: 'keyboard cat',
    resave: false,
    saveUninitialized: true
}));

app.get("/",function(req,res){
    if(req.session.login == "1"){
        res.send("欢迎" + req.session.username);
    }else{
        res.send("没有成功登陆");
    }
});

app.get("/login",function(req,res){
    req.session.login = "1";    //设置这个session
    req.session.username = "哈哈";
    res.send("你已经成功登陆");
});
app.listen(3000);

你可能感兴趣的:((十)Express POST COOKIE和SESSION)