打卡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 ...
随机推荐
- CodeGym自学笔记04——什么是编译器?
编译器 编程语言可以同时被人和编译器所理解.编译器是一个特殊的程序,它可将用编程语言编写的程序转换成一系列的机器代码. 程序员通常用编程语言来编写程序,然后运行编译器,将程序员编写的程序代码文件转换为 ...
- Java面向对象之instanceof和类型转换
instanceof instanceof(类型转换):利用此关键字可以判断某一个对象是否是指定类的实例 格式: 对象 instanceof 类 返回boolean型 - 如果某个对象是某个类的实例, ...
- 你可能不知道的HTML小技巧 面试题小技巧
程序员面试题库分享 1.前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 2.前端技术导航大全 推荐:★★★★★ 地址:前端技术导航大全 3.开发者颜色 ...
- vue封装全局确认弹窗
下载文件1.弹窗组件 <template> <view class="bombFrame" v-if="bshow" :class=" ...
- win10企业版在线转换成win10专业版
1.下载windows附件包,解压到C盘根目录 https://pan.baidu.com/s/19Zyrav9sriS9nFyJsM8ydQ 提取码:gsp6 2.运行命令 2.1.以管理员身份运行 ...
- java.net.ConnectException: Your endpoint configuration is wrong; For more details see: http://wiki.apache.org/hadoop/UnsetHostnameOrPort
今天使用在hive中建表,并在hive中将查询到的语句插入到新表中时,一直开在如图所示位置不动 等待了20多分钟,然后报了这么个错 java.net.ConnectException: Your en ...
- C# 委托/回调
public delegate void MyDelegate();//定义一个委托类型 MyDelegate myDelegate;//创建一个委托变量 myDelegate = new MyDel ...
- 自定义注解获取请求Header中的值
前言 这几天开发一个项目,为了方便,前台将当前登陆人的ID和名称放在每个请求的Header中(这里不考虑安全性之类的),这样后台只要需要用到,就直接从Header中get出来就可以了. 后台实现方法 ...
- Java集合-练习巩固
练习一 public class H1_Test { public static void main(String[] args) { H1_News h1News = new H1_News(&qu ...
- Metasploit渗透测试框架一
Metasploit简介 Metasploit是一个渗透测试平台,使您能够查找,利用和验证漏洞.该平台还有Metasploit Pro. Metasploit是一个免费的.可下载的框架,本身自带数百已 ...