一.文件上传
1.文件类型的校验
(1.)根据文件名后缀来判断。缺点:如果修改文件名称后缀,依然可以上传该文件
(2.)根据文件二进制码来判断类型。
文件内容是一个二进制的码。用hexdump可以查看。每种的图片都有相应的格式
2.加快文件上传速度。文件断点续传(图片切片,分段上传)
文件上传DIV
(1.)图片切片
(2.)图片上传
文件合并(上传的是一些切片,让其合并成一个文件)
前端:
后端:
(3.)文件切片是否已经上传
(4.)文件指纹(MD5 单靠文件名称判断文件是否存在不靠谱,万一有文件名一样)web-worker计算MD5不影响主流程
hash.js文件
(5)使用浏览器本身的空闲时间
(6)抽样计算
(7.)文件秒传
前端:
后端:
(8)并发数量控制,并且报错小于3次可以重试,大于三次终止上传
二.全站项目
注:技术 Nuxt(前端UI,SSR) ,Egg(egg是一个开源的企业级Node.js框架,约定大于配置)
1.登录注册(Sessin 和jwt架构介绍)
(1.)前端cookit,后端session;每次请求带上cookie;
缺点:前后端没有完全分离;不好做跨域的操作.
(2.)Jwt(用户信息+过期时间=token)前端把token放在localstorage
Axios钩子将token放在header上;后端拿到token解密然后查找用户;
比较处理好跨域,前后端完全分离。
(3.)oAuth:地方放登录:微博登录,github登录
2.持续性集成
(1.)Docker-compose封装;阿里云ESC部署;通过GitHubAction持续性集成
附件: