Easypan---仿百度网盘前端项目---快速学习笔记--自用

1,280 阅读4分钟

项目名称:Easy云盘

项目描述: 一个仿百度云盘面向C端用户的网盘项目,包括用户注册,QQ快捷登录,文件上传,分片上传,断点续传,秒传,文件在线预览,包括文本,图片,视频,音频,excel,word ,pdf 等文件在线预览,文件分享等功能。

技术选型:Vue3 +  vite3 + vuex

负责内容:

  • 1.  用户注册,登录,QQ快捷登录,发送邮箱验证码,找回密码。

  • 2.  文件分片上传,断点续传,秒传,上传进度展示,文件预览,新建目录,文件重命名,文件移动,文件分享,删除,下载 等功能。

  • 3.  文件分享列表,取消分享。

  • 4.  回收站功能,还原文件,彻底删除。

  • 5.  设置模块  1、超级管理员可以看到所有用户上传的文件,可以对文件下载,删除。 2、超级管理员可以对用户进行管理,给用户分配空间,禁用、启用用户3、超级管理员可以对系统进行设置,设置邮箱模板,设置用户注册初始化空间大小。

  • 6.  用户通过分享链接和分享码预览下载其他人分享的文件,同时也可以将文件保存到自己的网盘。

项目难点:

  • 1.  为了实现秒传,在文件上传前需要对文件进行MD5,避免文件过大,浏览器内存溢出,采用SparkMD5对文件分片MD5,文件分片上传,使用Promise 完成多文件同时上传,文件开始上传,暂停上传。

  • 2.  多级目录线性展示,结合路由,刷新后任保持目录层级。

  • 3.  文件预览,根据不同的文件类型,接受不同的数据类型,包括arraybuffer,blob,json类型的数据。

  • 4.  文件分享,用户打开链接后需要输入分享码才可以读取文件,输入后,在一个会话内状态一直保持,session会话结束后,需要再次输入分享码。

项目收获:

熟悉了第三方登录接入流程,比如QQ登录。云盘项目不是简单的增删改查,对大文件采用递归调用完成分片MD5处理,大文件分片上传,解决了实际项目开发中对大文件的上传处理。根据不同的文件类型,使用不同的插件完成文件的在线预览。比如视频的分片播放,pdf,excel,word 在线预览。通过这个项目让我对vue的相关知识点,比如数据双向绑定,组合式Api,生命周期函数,状态管理,路由,watch,父子组件,组件封装,表单校验,页面布局,css编写等有了更加深刻的认识,此项目将所学的前端知识进行了综合运用。

小内容

使用变量opType记录 登录,注册状态

多个状态的所有元素装在一个组件内,v-if 控制不同状态下的元素显隐藏

在切换状态时,重置表单

提交表单时

密码为md5传输,md5 哈希加密

路由重定向到主页面

更换头像时,加上时间戳(随机数),改变地址,防止缓存,图像没变化

输入框获取焦点时,使用nextTick(),配合v=if使用,因为使用nextTick是在dom更新后才起作用,但是v-show dom一直存在,不更新,不起作用

上传文件,el-upload

文件列表数组包含:文件名,文件大小,文件uid,上传进度,md5值,md5进度,上传状态,当前分片,错误信息

状态分为:空文件,初始解析,失败,上传中,上传完成,秒传

文件组织:每个文件有一个唯一id,还有一个pid(在那个文件夹下)

上传先转码,md5

fileReader类 onload

大文件切片,计算开始和结尾,调用slice,分片递归读取,分片计算md5值,之后把md5组合在一起

后端ffmpeg把切片组合

文件秒传:原理:在文件上传之前先计算出文件的hash,然后发送给后端进行验证,看后端是否存在这个hash,如果存在,则证明这个文件上传过,则直接提示用户秒传成功

文件删除,传id

文件预览,一个遮罩

图片 直接el组件加上链接

视频使用dplayer 和hls(流媒体协议)分片传输播放,前端得到的是ts切片

文件分享,生成一个链接,,然后通过链接去获取分享列表,渲染,后获取下载链接

基础知识--Element组件

  • el-form Form表单

    • 表单验证
    • rules 定义规则
    • validate 对表单内容进行校验
  • el-form-item 表单项

    • label 内容项名
    • prop 设置为需校验的字段名
  • el-input 输入框

    • placeholder
    • v-model.trim绑定时,加上去掉空格
  • el-select

  • el-button 按钮

  • Dialog 对话框 弹窗