引言
文件上传功能是我们开发中经常会遇到的功能点,当日常开发中遇到小文件(比如:头像),可以直接将文件转为字节流直接上传到服务器上即可。但是当遇到大文件这种(比如:一部电影至少1个G)该怎么上传?怎么快速上传?传到一半断了,如何规避从头再次上传?
接下来,我们看看怎么解决这些问题!
分片上传
我相信大家肯定都听过分片上传,下面我们具体看一下
什么是分片上传
分片上传,顾名思义就是将我们需要上传的文件,按照一定的规则(比如大小),将文件分割成不同的数据块(俗称的part)来进行分批量的上传,上传完成后,再交给服务端对所有上传完成的文件进行汇总,整合为我们原来的的初始文件。
使用场景
- 较大文件上传
- 网络环境不太稳定,可能会有断网,重新上传的风险存在的情况下
断电续传
断点续传我们相信大家肯定不陌生,我们之前经常用的迅雷、电驴这些都会有断点续传的功能
什么是断电续传
断点续传,顾名思义就是在上传或者下载的时候,将上传或下载任务(一个压缩包或者文件),通过程序划分为几个部分,每一个部分采用一个线程进行下载或者上传,如果遇到了网络故障的情况,可以从已经上传或者下载的部分开始继续接着上传或下载没有完成的内容,从而避免从头开始上传或者下载。
使用场景
短短续传起始就是分片上传你的一个分支,所以他和分片上传使用的场景是一致的
实现步骤
- 将需要上传的文件按照事先约定的规则分割,分割成大小相同的数据库
- 初始化一个上传任务,返回上传分片的唯一标识
- 按照一定的策略发送各个分片数据块
- 发送完成后,服务端程序根据判断数据上传的完成状态,进行数据合并。
好了,今天关于实现超大文件上传逻辑就讲解到这里,欢迎大家留言交流
也欢迎大家关注我的公众号《coder练习生》