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--图片上传,身份验证的更多相关文章

  1. 一个node.js图片上传显示小应用

    文件结构如下: 实现的功能有: 可以通过浏览器使用. 当请求http://domain/start时,可以看到一个欢迎页面,页面上有一个文件上传的表单. 用户可以选择一个图片并提交表单,随后文件将被上 ...

  2. node.js图片上传

    1.node-formidable 对文件上传提供帮助的组件 2.app.js var formidable = require('formidable'); var http = require( ...

  3. ajax+node实现图片上传

    利用formData实现ajax上传图片后,保存图片到指定收藏夹,然后展示新重命名后的图片 html: <input type="file" id="uploadI ...

  4. Nodejs之MEAN栈开发(四)---- form验证及图片上传

    这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能.开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R ...

  5. form验证及图片上传

    form验证及图片上传 这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能.开始之前需要源码同学可以先在git上fork:https://github.com/ ...

  6. nodejs图片上传

    node中图片上传的中间键很多,比如formidable等,这里我们使用nodejs中的fs来实现文件上传处理: 1.安装中间键connect-multiparty npm install conne ...

  7. 用Vue来实现图片上传多种方式

    没有业务场景的功能都是耍流氓,那么我们先来模拟一个需要实现的业务场景.假设我们要做一个后台系统添加商品的页面,有一些商品名称.信息等字段,还有需要上传商品轮播图的需求. 我们就以Vue.Element ...

  8. 使用express+multer实现node中的图片上传

    使用express+multer实现node中的图片上传 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在n ...

  9. Node.js之图片上传

    本文用node进行图片上传主要借助formidable插件,具体使用步骤如下: 1.安装formidable插件 npm install formidable -g 2.引入依赖包 const for ...

  10. Node.js实现图片上传功能

    node接口实现 const express = require('express') const mysql = require('mysql') const cors = require('cor ...

随机推荐

  1. [PHP]流程控制的替代语法:endif/endwhile/endfor使用介绍

    我们经常在wordpress一类博客程序的模板里面看到很多奇怪的PHP语法,比如: 代码如下: <?php if(empty($GET_['a'])): ?> <font color ...

  2. 7. mixin的实现原理

    mixin的实现原理 在Vue.mixin()中的内容会被维护到Vue.options静态属性里面 然后通过mergeOptions以特定的合并策略将全局的属性和用户属性合并起来 在获取用户选项的时候 ...

  3. case语法案例

    case语法案例 制作nginx启停脚本 1.条件: 2.思路: 3.脚本 添加删除openvppn用户的脚本 1.实现要求 2.具体脚本 case语法案例 制作nginx启停脚本 1.条件: 启动服 ...

  4. git 修改commit 备注

    1.没有push 1.修改最后一次的提交备注 git commit --amend 输入 i 进行编辑模式,修改好以后 esc 退出编辑模式 :wq 保存并退出. 2.修改之前的备注 git reba ...

  5. ES使用

    shards 分片数 ES存储数据可以存储在多个分片 下载ES curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elas ...

  6. CSMA/CA多路复用、载波监听、冲突避免

    CSMA/CA是避免各站点之间数据传输冲突的算法,其特点是发送包的同时不能检测到信道上有无冲突,只能尽量"避免".例如,如果计算机A和计算机C同时给计算机B发送一个控制消息,它们将 ...

  7. ES关闭打开索引

    转载: https://mp.weixin.qq.com/s?__biz=MzAxMjY5NDU2Ng==&mid=2651862931&idx=1&sn=5834af8065 ...

  8. android判断是否连接wifi跟网络状态的判断及wifi信号强度的方法

    场景:android判断是否连接wifi跟网络状态的判断 android判断是否连接wifi和网络状态的判断 // 是否连接WIFI public static boolean isWifiConne ...

  9. js引入样式资源报错

    如上图,import这几个样式资源为什么会报错,怎么解决呢,而且那个jquery-ui之前也会报错但是现在刷新一遍他又不报错了其他的css文件报错 图片转代码服务由CSDN问答提供 功能建议   im ...

  10. MybatisPlus #{param}和${param}的用法详解

    作用 mybatis-plus接口mapper方法中的注解(如@Select)或者xml(如)传入的参数是通过#{param}或者${param}来获取值. 区别 1.解析方式: #{param}:会 ...