express实践(一)
涉及以下这些内容:
- 主体、
- cookie、session
- 数据
- 模板引擎
服务器基本结构:
const express=require('express');
const static=require('express-static');
const cookieParser=require('cookie-parser');
const cookieSession=require('cookie-session');
const bodyParser=require('body-parser'); //只能解析一般的post数据,不能解析post文件
const ejs=require('ejs');
const jade=require('jade');
var server=express();
server.listen(8080);
//1. 解析cookie
server.use(cookieParser('goreafspoibuodds'));
// 2. session
var arr=[];
for(var i=0;i<100000;i++){
arr.push('keys_'+Math.random());
}
server.use(cookieSession({name:'张雯_sess_id',keys:arr,maxAge:20*3600*1000}));
// 3.post
server.use(bodyParser.urlencoded({extended:false})); //不用扩展模式(extended:false)
//用户
server.use('/',function(req,res,next){
console.log(req.query,req.body,req.cookies,req.session);
});
// 4.static
server.use(static('./www'));
body-parser 不够好 因为它只能解析一般的post数据,不能解析post文件.
如果要上传文件,然后读取文件的相关数据改怎么办?
html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<!-- 普通的post表单不能上传文件,只能用一个东西:enctype -->
<!-- multipart/form-data 把表格的真实数据分割后上传 -->
<form action="http://localhost:8080/" method="post" enctype="multipart/form-data">
文件:<input type="file" name="f1" /><br>
<input type="submit" value="上传">
</form>
</body>
</html>
nodejs:
const express=require('express');
const bodyParser=require('body-parser');
const multer=require('multer');
// 想要上传文件,首先要又个multer对象
var objMulter=multer();
var server=express();
// 错误.bodyParser.urlencoded对应的form表单的enctype类型必须也是urlencoded
// server.use(bodyParser.urlencoded({encoded:false}));
server.use(objMulter.any());
server.post('/',function(req,res){
// console.log(req.body); 只能存储我们的用户名之类的
console.log(req.files); //可以用来存储文件
});
server.listen(8080);
注意:
1.enctype一共有三种类型:
2.multer有一些参数.比如any,意思是可以接收任何文件
比如single,意思是只能接收指定文件
执行结果:
nodejs的中间件Multer的可选参数
文件信息(file information):上传后的文件具有如下属性
fieldname: 上传文件标签在表单中的name
originalname:文件在用户电脑上的文件名
Encoding:该文件的编码
mimetype:该文件的Mime type
size:该文件的字节数
destination:该文件要保存的文件夹
filename:在保存的文件夹下的文件名
path:文件上传后保存的完整路径
buffer:完整文件的buffer
接下来要借助这些参数完成的工作:
1.存完之后会发现,文件名没有后缀.这时候我们需要补上它原来的后缀名
2.把文件存放到指定的文件中去
如果要改文件名字,需要用到fs.rename()的功能:
const path=require('path');
const fs=require('fs');
var str='c:\\wamp\\www\\a.html';
var obj=path.parse(str);
//base 文件名部分
//ext 扩展名部分
//dir 路径部分
//name 文件名部分
console.log(obj.ext); //看看文件的后缀名是啥..
fs.rename('a.txt','b.txt',function(err){ //把a.txt改名为b.txt
if(err){
throw err;
}
console.log('done!');
});
总体的js文件:
const express=require('express');
const bodyParser=require('body-parser');
const multer=require('multer');
const fs=require('fs');
var pathlib=require('path');
// 想要上传文件,首先要又个multer对象
var objMulter=multer({dest:'./www/upload/'});
var server=express();
// 错误
// server.use(bodyParser.urlencoded({encoded:false}));
server.use(objMulter.any());
server.post('/',function(req,res){
// console.log(req.body); 只能存储我们的用户名之类的
console.log(req.files); //可以用来存储文件
// 获取原来文件的扩展名
// 修改它的扩展名
var newName=req.files[0].path+pathlib.parse(req.files[0].originalname).ext;
fs.rename(req.files[0].path,newName,function(err){
if(err)
res.send('上传失败');
else
res.send('成功');
});
});
server.listen(8080);
express实践(一)的更多相关文章
- express 实践
截图: 这个项目的数据是根据之前瓜子网爬虫爬的北京区数据 express + mongodb + pug(jade) + flex.css: 项目地址: https://github.com/uust ...
- nodejs 实践:express 最佳实践 (一)
express 最佳实践 (一) 最近,一直在使用 nodejs 做项目,对 nodejs 开发可以说深有体会. 先说说 nodejs 在业务中的脚色,, 在 web同构 方面, nodejs 的优势 ...
- nodejs 实践:express 最佳实践 (一) 项目结构
express 最佳实践 (一) 第二篇: express 最佳实践(二):中间件 最近,一直在使用 nodejs 做项目,对 nodejs 开发可以说深有体会. 先说说 nodejs 在业务中的脚色 ...
- express 最佳实践(二):中间件
express 最佳实践(二):中间件 第一篇 express 最佳实践(一):项目结构 express 中最重要的就是中间件了,可以说中间件组成了express,中间件就是 express 的核心. ...
- nodejs 实践:express 最佳实践(四) express-session 解析
nodejs 实践:express 最佳实践(四) express-session 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs ...
- vue实践---vue配合express实现请求数据mock
mock数据是前端比较常见的技术,这里介绍下vue配合express 实现请求数据mock. 第一步: 安装 express : npm install express -D 第二步: 简历需要mo ...
- nodejs 实践:express 最佳实践系列
nodejs 实践:express 最佳实践系列 nodejs 实践:express 最佳实践(一) 项目结构 nodejs 实践:express 最佳实践(二) 中间件 nodejs 实践:expr ...
- 开始nodejs+express的学习+实践(1)
开始nodejs+express的学习+实践(1) 开始nodejs+express的学习+实践(2) 开始nodejs+express的学习+实践(3) 开始nodejs+express的学习+实践 ...
- nodejs 实践:express 最佳实践(二) 中间件
express 最佳实践(二):中间件 第一篇 express 最佳实践(一):项目结构 express 中最重要的就是中间件了,可以说中间件组成了express,中间件就是 express 的核心. ...
随机推荐
- 邮箱&&密码验证-原理
原理版: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- ServiceFabric极简文档-0. ServiceFabric简介
前言: 最近ServiceFabric开源了,大家热情都比较高,官方文档大而全,但快速入手不容易找到头绪.发几篇极简的文档,跟大家分享一下,顺便为Ray的ServiceFabric部署做一下铺垫.因为 ...
- python笔记之序列
str字符串 表达:单引号,双引号,反斜杠 'let\'s go.' #只使用单引号,外部使用单引号,内部单引号用反斜杠 "let's go. " #单双引号混合使用 长字符串 使 ...
- IPFS: NAT traversal(NAT穿越)
IPFS是一个p2p网络,那么一定绕不开的一个问题就是NAT穿越.之前的文章里面也提到过IPFS网络连通性使用的ICE NAT穿越框架,本文简单介绍一下什么是NAT. 为什么有NAT技术? NAT ...
- 关于Maven的配置与学习
1. 简介 官方说法:Apache Maven is a software project management and comprehension tool. Based on the concep ...
- Algorithm --> 并查集
并查集 主要解决图的连通性问题,比如: 1.随意给你两个点,让你判断它们是否连通: 2.问你整幅图一共有几个连通分支: 初始化: void init(int size) { ; i < size ...
- Spring Cloud Consul 实现服务注册和发现
Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为基于 JVM 的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布 ...
- [css 揭秘]:CSS揭秘 技巧(四):边框内圆角
我的github地址:https://github.com/FannieGirl/ifannie/ 源码都在这上面哦! 喜欢的给我一个星吧 边框内圆角 问题:有时候我们需要一个容器,只在内侧有圆角,而 ...
- 复习C#
(1)public共有访问.该修饰符可用于类和结构的成员,可用于命名空间下直接定义的类型,对于类和结构成员,如果声明为共有的,那么除自身的成员,外部成员也可以访问 (2)private限制为私有访问. ...
- 巨人大哥谈Web应用中的Session(session详解)
巨人大哥谈Web应用中的Session(session详解) 虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术. ...