分块上传和断点续传 === - 小文件不建议分块上传 - 可以并行上传分块,并且可以无序传输 - 分块上传极大提高传输效率 - 减少失败后重试的流量和时间 #### 分块上传 > 文件切分成多块,独立传输,上传完成后合并 步骤: - 初始化上传 (前段上传初始化,提示后端文件切分为几块,每块多大) - 上传分块(并行) (客户端执行上传分块任务) (可以手动取消) (获取文件上传进度) - 通知上传完成 (通知后端文件块全部上传完毕,可以执行合并) 服务器架构变迁 ![](https://box.kancloud.cn/477e236c78e2515d931097f09818f6d6_958x495.png) #### 断点续传 > 基于分块上传机制实现,传输暂停或者异常中断后,可以基于原来的进度重传 ### 接口设计 ``` // 分块上传通用接口 // 初始化分块信息 router.POST("/file/mpupload/init",nil) // 上传分块 router.POST("/file/mpupload/uppart",nil) // 通知分块上传完成 router.POST("/file/mpupload/complete",nil) // 取消上传分块 router.POST("/file/mpupload/cancel",nil) // 查看分块上传的整体状态 router.POST("/file/mpupload/status",nil) ``` 具体接口的实现看下面的扩展!!!!