开放性问题: 需完成大文件上传功能,传输速度慢,怎么实现这个功能?
- 分片上传
- 断点续传
- 安全校验
- 文件秒传
- 高并发情况
- 多文件上传
前端: React 后端: Node + Nginx(负载均衡)
- 前端实现选择文件上传,后端接收文件并保存
- 分片上传
- 文件切片改造,并发控制(async-pool)发送切片
- 全部发送完成后,发送合并请求
- 后端接收保存分片后的数据,保存已上传的编号
- 收到合并请求后,读取切片文件,合并保存
- 断点续传
- 前端调用接口,请求已上传的编号,并发控制发送未上传的分片
- 文件秒传
- 前端对内容取 hash,调用后端接口查询是否有相同文件
- 后端查询待上传文件是否已被上传过,如果有则复制一份并重命名,没有则开始上传
- 高并发情况
- 服务端多台服务器部署,采用nginx负载均衡,转到同一台服务器(session一致)
- 拖拽上传
- 改为vite构建项目
- 改为nodemon启动后端服务
Start the dev server,
$ yarn dev
$ yarn server
# or 同时启动前端和后端项目
$ yarn all
nodejs+koa2实现文件上传大文件切片上传断点续传(服务器端) HTML5 File API 配合 Web Worker 计算大文件 SHA3 Hash 值 webuploader