PHP将文件夹的文件压缩到Zip包里
作者:小编日期:2023-06-30浏览:5788分类:其他分享
事情的经过是因为我正在写授权系统需要用到Zip相关的函数,因为Zip相关函数是PHP的扩展功能,之前没有了解过,还有太懒了一直拖着,直到今天我才写出来实现相关功能。
以下是代码:
<?php /* * Cumin云版权所有 */ # 将文件夹的文件压缩到文件里 class Zip { /** * 将目标文件夹下的内容压缩到zip中(zip包含文件夹目录) * @param $sourcePath *文件夹路径 例: /home/test * @param $outZipPath *zip文件名(包含路径) 例: /home/zip_file/test.zip * @return string */ public static function zipFolder($sourcePath, $outZipPath) { $parentPath = rtrim(substr($sourcePath, 0, strrpos($sourcePath, '/')),"/")."/"; $dirName = ltrim(substr($sourcePath, strrpos($sourcePath, '/')),"/"); $sourcePath=$parentPath.'/'.$dirName;//防止传递'folder'文件夹产生bug $z = new \ZipArchive(); $z->open($outZipPath, \ZIPARCHIVE::CREATE);//建立zip文件 $z->addEmptyDir($dirName);//建立文件夹 folderToZip($sourcePath, $z, strlen("$parentPath/")); $z->close(); return $outZipPath; } public static function folderToZip($folder, &$zipFile, $exclusiveLength) { $handle = opendir($folder); while (false !== $f = readdir($handle)) { if ($f != '.' && $f != '..') { $filePath = "$folder/$f"; // 在添加到zip之前从文件路径中删除前缀 $localPath = substr($filePath, $exclusiveLength); if (is_file($filePath)) { $zipFile->addFile($filePath, $localPath); } elseif (is_dir($filePath)) { // 添加子文件夹 $zipFile->addEmptyDir($localPath); self::folderToZip($filePath, $zipFile, $exclusiveLength); } } } closedir($handle); } }
相关文章
- 05-03 揭秘靠谱副业玩法,月入过万很难吗
- 04-30 五一假期旅游攻略大全,更新至2025年4月份
- 04-28 197款可商用字体打包下载
- 04-22 茶艺课程全套【教学视频】
- 04-17 广东广西海南街边大桶糖水制作教程
- 04-15 滴滴打车优惠券推广站项目,每天被动收入几十元不等
- 03-30 关于抖音同城相亲盘的项目拆解
- 03-12 docker使用命令删除容器和镜像
- 03-08 免费图床总失效?2025 年这 7 个稳定图床让你告别图片外链丢失
- 03-03 百度起诉风波不断,SEO 行业何去何从?
- 03-02 腾讯混元AI视频免费制作!属实牛逼!
- 03-01 火山引擎DeepSeek满血版免费领啦!附详细使用配置教程!
取消回复欢迎你发表评论:
Copyright© XGW9.COM版权所有〖小庚资源网〗
〖恒创科技〗为本站提供专业云计算服务
本站发布的内容来源于互联网,如果有侵权内容,请联系我们删除!E-mail:xgzyw6@outlook.com
关于我们|我要投稿|免责声明|XML地图
暂无评论,来添加一个吧。