安装依赖
-
npm install vue-simple-uploader --save -
npm install spark-md5 --save
特性
- 支持文件、多文件、文件夹上传
- 支持拖拽文件、文件夹上传
- 统一对待文件和文件夹,方便操作管理
- 可暂停、继续上传
- 错误处理
- 支持“快传”,通过文件判断服务端是否已存在从而实现“快传”
- 上传队列管理,支持最大并发上传
- 分块上传
- 支持进度、预估剩余时间、出错自动重试、重传等操作
Code
1 | // template |
1 | <script setup lang="ts"> |
1 | // css |
Description
uploadBtnRef.value.btn.click()唤醒选择文件窗口- MD5数字签名
核心
- md5数字签名
- 文件分片
- 把一个大文件按照一定大小来分成很多个小文件(分片)来上传,上传后再由服务端对所有上传的文件进行汇总整合成原始的文件
- 流程概述
- Blob对象中的slice方法可以对文件进行切割,File对象是继承Blob对象的,因此File对象也有slice方法
- 定义每一个分片文件的大小变量为chunkSize,通过文件大小fileSize和分片大小chunkSize得到分片数量chunks,通过for循环以及**file.slice()**方法对文件进行分片,序号为0 - n,和已上传的切片列表做比对,得到所有未上传的分片,添加到请求列表中
1 | // 自己实现的切片上传最小示例 |
- 秒传及断点续传
- 在上传过程最开始,发送一个get请求,询问服务器当前文件的存储信息
- 存储信息中已有该文件
- 秒传
- 存储信息中包含当前文件的部分分片信息
- 断点续传
- 跳过这部分分片的上传
- 断点续传
- 存储信息为空
- 完整上传