专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

PHP 大文件分片上传完整性校验

项目中使用到了公司的S3服务,里面需要分片上传安装包文件,但是在某次上传的时候发现下载下来的安装包无法安装,提示已损坏,造成的后果就是周末两天 该渠道的下载量为0,流失了好多用户。然后惨兮兮。。

然后想了几个方案:

一、前端上传的时候带上分片上传前的文件大小,保存到后端数据库里,然后定时脚本每次去获取一下上传到S3的文件大小,比较文件大小是否一致,不一致则认为出现异常。代码如下:

function getResourceSize($url)
{
        $header_array = get_headers($url, true);
        $size = $header_array['Content-Length'];
        return $size;
}

二、前端上传的时候计算每个分片的MD5值,最后得到整个文件的MD5值,同样还是保存到后端数据库,由脚本定时去检查上传到S3的文件的MD5值,比较是否一致即可,讲道理这个方案更靠谱一些。但是问题也有一些,前端每次上传的时候都需要计算所有分片的MD5信息,会增加上传的耗时。另一方面,后端这我一开始只知道linux 下有

md5sum

命令可以计算文件的md5信息。所以只能通过

exec('md5sum ');

这种比较简陋且危险的方式。而且这种方式每次我还得下载S3上的文件到服务器本地才可以。浪费内存资源。

三、最终方案 几经辗转,竟然发现PHP自带计算文件MD5信息的方法

md5_file()

www.php.net/manual/zh/f…

不仅可以计算本地文件的,还可以计算远程网络资源的。这就避免了前面说的问题。

PS:提供一个前端计算文件MD5的方法,spark-md5 计算结果和md5sum 的效果是一样的。 9px.ir/demo/increm…

文章永久链接:https://tech.souyunku.com/45132

未经允许不得转载:搜云库技术团队 » PHP 大文件分片上传完整性校验

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们