超大文件上传下载以及提速和限速实现方案,可以实现文件md5加优算法唯一表示、动态文件合并算法、并发文件传输、指定速度下载,可以选择redis或者mysql实现记录。
最近遇到项目需要使用大文件上传功能,几十个G的文件需要进行上传和下载,采用普通的上传方案已经不再适用,会导致很多问题,例如:
- 文件上传很慢
- 无法支持断点续传
- 经常超时或失败
- ……
目前实现方案最多的是通过 大文件分片 来解决上传下载问题,原理:
- 将需要上传的文件按照一定的分割规则,分割成相同大小的数据块;
- 初始化一个分片上传任务,返回本次分片上传唯一标识;
- 按照一定的策略(串行或并行)发送各个分片数据块;
- 发送完成后,服务端根据判断数据上传是否完整,如果完整,则进行数据块合成得到原始文件。
实现和解决途径:
- 文件分割
- 文件压缩
- 流式传输
- 传输编码
当使用 HTTP 进行大文件传输