本节知识点
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);