前端用了HTML,VUE2,VUE3,后端用了PHP,ThinkPHP,做事器用了Linux,数据库是MySQL,上传组件用的是百度的WebUploader,初期还是能用,但是下载这块的话就不是很好用了,不太能知足客户的需求,
客户哀求能够支持大文件下载,断点续传,批量下载,文件夹下载,文件夹下载要支持文件夹的层级构造,也便是用户上传的文件夹是什么层级构造,下载下来也必须是这个层级构造,项目一期我们是采取的打包的办法,直接在做事器上面把文件夹打成一个压缩文件RAR,这样下载下来后解压,文件夹层级构造是同等的。
但是后来碰着一个问题,用户上传了一个文件夹,里面包含了1万个文件,文件有大有小,大的有1G,10G,小的有几KB,或者几MB,将这个文件夹在做事器打包后变成了一个500G的文件。然后用户下载这个文件的时候就崩溃了,用的是谷歌chrome,但是还是崩。

对付大文件的处理,无论是用户端还是做事端,如果一次性进行读取发送、吸收都是不可取,很随意马虎导致内请安题。以是对付大文件上传,采取切块分段上传
从上传的效率来看,利用多线程并发上传能够达到最大效率。
断点续传,便是在文件上传的过程中发生了中断,人为成分(停息)或者不可抗力(断网或者网络差)导致了文件上传到一半失落败了。然后在环境规复的时候,重新上传该文件,而不至于是重新开始上传的。
断点续传的功能是基于分块上传来实现的,把一个大文件分成很多个小块,做事端能够把每个上传成功的分块都落地下来,客户端在上传文件开始时调用接口快速验证,条件选择跳过某个分块。
实现事理,便是在每个文件上传前,就获取到文件MD5取值,在上传文件前调用接口,如果获取的文件状态是未完成,则返回所有的还没上传的分块的编号,然后前端进行条件筛算出哪些没上传的分块,然后进行上传。
当吸收到文件块后就可以直接写入到做事器的文件中。
版本:6.5.40
代码:https://gitee.com/xproer/up6-php/tree/6.5.40/
安装环境
PHP:7.2.14
调度块大小
NOSQL
NOSQL不须要任何配置,可以直接访问测试
SQL
创建数据库
您可以直接复制脚本进行创建
配置数据库连接
6.安装依赖
访问页面进行测试
数据表中的数据
干系参考:
文件保存位置
php5教程,
源码工程文档:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra
源码报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl
OEM版报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuzp4W0a
产品源代码:https://drive.weixin.qq.com/s?k=ACoAYgezAAwbdKCskc
授权天生器:https://drive.weixin.qq.com/s?k=ACoAYgezAAw0P06owX