(十)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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容

  • HTTP cookie(也称为web cookie,网络cookie,浏览器cookie或者简称cookie)是网...
    留七七阅读 17,968评论 2 71
  • 背景在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cooki...
    时芥蓝阅读 2,365评论 1 17
  • 姓名 徐海燕 公司 宁波四维尔工业有限责任公司 【日精进打卡第249天】 【知~学习】 《六项精进》大纲今日10遍...
    柠檬茶_4592阅读 237评论 0 0
  • “元认知”最开始是从永澄老师那里听到的,虽然不是很理解(我想也许是因为读书比较少的原因吧,到现在为止我貌似没读过...
    jinxi197阅读 408评论 0 0
  • 每次一有你会找我复合的想法 我都会拼了想我那么矮 那么丑 怎么可能 况且你家的生活生活水平在我家之上之上 就算复合...
    peahen阅读 223评论 0 0