依然 2021-07-13 19:05:25 4830次浏览 1条评论 1 1 0

前端Javascript+Html5+后端PHP分块上传文件,PHP分块上传大文件
该项目可以正常运行,入口为index.html,需要正确配置fileDir的读写权限

项目地址
https://github.com/1107012776/php-shard-upload

安装
composer require lys/php-shard-upload

注意
该包必须通过composer2+ 安装
您可以使用composer self-update --2迁移到它。如果遇到问题,您可以随时使用 返回composer self-update --1

环境
必须配置上传允许数据流大于2M 在php.ini里面或者nginx里面配置

1.实现断点续传,已上传过的块,前端直接过滤掉,无需继续传到后端,加速上传效率,减少带宽

2.实现快速上传,即之前上传过,该文件已经存在的,很快就能上传成功,其原理就是文件md5+文件sha1的判断

具体可以看如下地址:
https://github.com/1107012776/php-shard-upload/blob/master/README.md

觉得很赞
  • 评论于 2021-07-26 08:38 举报

    看看。希望可用

    1 条回复
    评论于 2021-10-15 11:43 回复

    可以用的,我自己有测试过
    1.利用前端的遍历(轮询)请求来合并上传的分块
    2.在合并的时候又使用文件锁,防止并发合并

    合并失败分二种情况:
    一种是数据合并异常,合并到某个块突然断开,则接下来合并接着上一个块进行合并,并没有删除游标文件和临时合并文件
    另一种,一般是程序进程突然被杀死导致,数据流写一半到临时文件(该种情况只是猜测有这种可能),则会删除游标和合并的临时文件,重新进行合并
    3.前端使用两个加密hash使上传的文件获取唯一标识,防止文件刚好一种加密hash重复的问题
    4.目前试过上传1.5G左右的没有发现问题(未试过更大的文件),更大的文件理论上是没有问题
    5.下载的类库也包含在该库里面,支持断点下载,支持下载1.5G左右的文件(未试过更大的文件),更大的文件理论上是没有问题
    6.无需使用flash,flash都淘汰了

您需要登录后才可以评论。登录 | 立即注册