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 的核心. ...
随机推荐
- spring boot rest例子
简介: 本文将帮助您使用 Spring Boot 创建简单的 REST 服务. 你将学习 什么是 REST 服务? 如何使用 Spring Initializr 引导创建 Rest 服务应用程序? 如 ...
- centos上的grub文件修改
centos上的grub文件修改 author:headsen chen 2017-10-10 17:36:42 个人原创,转载请注明作者和出处,否则追究法律责任 1,centos6上的修改:vim ...
- 剑指Offer-不用加减乘除做加法
package Other; /** * 不用加减乘除做加法 * 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. * 思路:位运算 * 1.两个数异或:相当于每一位相加 ...
- PAT 个位数统计
描述 给定一个k位整数N = dk-1*10k-1 + ... + d1*101 + d0 (0<=di<=9, i=0,...,k-1, dk-1>0),请编写程序统计每种不同的个 ...
- 最小化安装CentOS7的网卡设置
实验环境:CentOS 7 Minimal Installation 64bit (1511) 最小化安装CentOS 7 后,查看网卡的信息让人很意外,因为网卡的命名规则变了,网卡的名字让人很难懂. ...
- 实现Windows数据绑定
dataSet数据集 dataset驻留于内存临时存储数据简单的理解为一个临时数据库将数据源的数据保存在内存中独立于任何数据库创建dataset对象引入命名空间:system.Datadatase ...
- java基础笔记(6)----面向对象的三大特性
简介:面向对象的三大特性就是封装,继承,多态,是面向对象的核心. 封装 简介:封装是类的边界,可以对数据起到保护作用 特性:属性私有,提供公开的get/set方法 属性私有:private 数据类型 ...
- Java基础学习笔记十一 Eclipse开发工具
Eclipse是功能强大Java集成开发工具.它可以极大地提升我们的开发效率.可以自动编译,检查错误.在公司中,使用的就是Eclipse进行开发. Eclipse的下载.安装.卸载 下载 http:/ ...
- 网易云音乐APP分析
网易云音乐-感受音乐的力量 你选择的产品是? 网易云音乐 为什么选择该产品作为分析? 之前用的一直是QQ音乐,但是有一天一个朋友分享了一首网易云上的音乐(顺便分享一下歌名:Drop By Drop) ...
- C语言博客作业—函数
一.PTA实验作业 题目1:使用函数输出水仙花数 1. 本题PTA提交列表 2. 设计思路 (1)首先定义函数narcissistic(number)判断number是否为水仙花数: (2)narc用 ...