打卡node day07--图片上传,身份验证
multer 模块 github:https://github.com/fanlina157/nodePro
npm i multer
fileRouter.js
var express = require('express')
var router = express.Router()
// 图片上传
const multer = require('multer')
var storage = multer.diskStorage({
// 设置上传后文件路径,uploads 文件夹自动创建(可以先手动)
destination: function(req, file, cb) {
cb(null, './static/img');
},
filename: function(req, file, cb) {
cb(null, `${Date.now()}-${file.originalname}`)
}
})
// 添加配置文件到muler对象。
var upload = multer({ storage: storage });
// 文件上传请求处理,upload.array 支持多文件上传,第二个参数是上传文件数目
// upload.single('hehe') 上传一张图片 hehe 就是上传的key 值 前后端统一
router.post('/upload', upload.single('img'), function (req, res) {
// 读取上传的图片信息
let {mimetype,filename} = req.file
// 限制文件类型
let imgType = ['png','jpg','jpeg','gif']
let temType = mimetype.split('/')[1]
if(imgType.indexOf(temType) === -1) {
return res.send('格式不正确')
}
// 把路径返回
let url = '/public/img/'+filename
res.send({url:url})
// file: {
// fieldname: 'img',
// originalname: '222.png',
// encoding: '7bit',
// mimetype: 'image/png',
// destination: './uploads',
// filename: '1584687806143-222.png',
// path: 'uploads\\1584687806143-222.png',
// size: 6268
// },
// 设置返回结果
// var result = {};
// if(!files[0]) {
// result.code = 1;
// result.errMsg = '上传失败';
// } else {
// result.code = 0;
// result.data = {
// url: files[0].path
// }
// result.errMsg = '上传成功';
// }
// res.end(JSON.stringify(result));
});
module.exports = router
身份验证问题
传统的session+cookie身份验证
server.js
const session = require('express-session');
const cookieParser = require('cookie-parser');
app.use(cookieParser());
app.use(session({
resave: true, // 即使session 没有被修改 也保存session 值 默认为true
saveUninitialized: false, // 无论有没有session cookie 每次请求都设置session cookie
secret: 'love',
cookeie:{maxAge:60*100*60*24} //设置过期时间
}));
const foodRouter = require('./router/foodRouter')
app.use('/food',(req,res,next)=>{
// user 接口存值了, food 接口判断
if(req.session.login) {
next()
}else {
return res.send({code:444, message:'请先登录'})
}
}, foodRouter)
用户退出登录

jwt

对称加密

使用 路由页面
const JWT = require('./token.js')

验证

打卡node day07--图片上传,身份验证的更多相关文章
- 一个node.js图片上传显示小应用
文件结构如下: 实现的功能有: 可以通过浏览器使用. 当请求http://domain/start时,可以看到一个欢迎页面,页面上有一个文件上传的表单. 用户可以选择一个图片并提交表单,随后文件将被上 ...
- node.js图片上传
1.node-formidable 对文件上传提供帮助的组件 2.app.js var formidable = require('formidable'); var http = require( ...
- ajax+node实现图片上传
利用formData实现ajax上传图片后,保存图片到指定收藏夹,然后展示新重命名后的图片 html: <input type="file" id="uploadI ...
- Nodejs之MEAN栈开发(四)---- form验证及图片上传
这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能.开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R ...
- form验证及图片上传
form验证及图片上传 这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能.开始之前需要源码同学可以先在git上fork:https://github.com/ ...
- nodejs图片上传
node中图片上传的中间键很多,比如formidable等,这里我们使用nodejs中的fs来实现文件上传处理: 1.安装中间键connect-multiparty npm install conne ...
- 用Vue来实现图片上传多种方式
没有业务场景的功能都是耍流氓,那么我们先来模拟一个需要实现的业务场景.假设我们要做一个后台系统添加商品的页面,有一些商品名称.信息等字段,还有需要上传商品轮播图的需求. 我们就以Vue.Element ...
- 使用express+multer实现node中的图片上传
使用express+multer实现node中的图片上传 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在n ...
- Node.js之图片上传
本文用node进行图片上传主要借助formidable插件,具体使用步骤如下: 1.安装formidable插件 npm install formidable -g 2.引入依赖包 const for ...
- Node.js实现图片上传功能
node接口实现 const express = require('express') const mysql = require('mysql') const cors = require('cor ...
随机推荐
- 00_java基础笔记
_01_命令提示符 //cmd的操作(Ms-DOS) /* * 进文件夹:cd 文件夹名 * 进多级文件:cd 文件夹1\文件夹2 * 返回上一级:cd .. * 回根路径:cd \ * 查看当前内容 ...
- ns 状态为Terminating
kubectl delete ns harbor --force --grace-period=0harbor状态为Terminatingkubectl proxy --port=6880kubect ...
- vue、iview、VeeValidate 表单验证完整
1.main.js (1).安装vee-validate npm install vee-validate --save (2).安装vue-i18n npm install vue-i18n --s ...
- software_programming
2020-04-04 12:05:43 todo list Java8 实战2> chapter2 行为参数化 业务逻辑的隔离 DSL
- page-break-after:always 打印分页
在实现打印功能时候,可以完整分页,需要配合二维数组来使用,避免下一页数据展示到上一页
- 容器 之搭建 jenkins ci 平台
1 部署 gitlab docker run -d \ --name gitlab \ -p 8443:443 \ -p 80:80 \ -p 9998:22 \ -v $PWD/config:/et ...
- 一、100ASK_IMX6ULL嵌入式裸板学习_LED实验(下)
自己尝试通过C语言方式驱动LED:
- beanshell 响应数据的解析与变量的保存
获取响应的数据 response = prev.getResponseDataAsString() //prev.getResponseDataAsString是Jmeter提供的方法,可以调取上次请 ...
- Java基础学习:10、封装和继承和super、方法重载、多态、动态绑定
封装: 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.意义: 只能通过规定的方法访问数据. 隐藏类的实例细节,方便修改和实现 ...
- kafka配置内外网同时访问
#内网监听名称,这个在配置文件中没有需要添加 inter.broker.listener.name=INTERNAL #内网监听规则,第一个是内网,第二个是外网,注意端口不一样,端口可以自己定义 li ...