PHP将文件夹的文件压缩到Zip包里

事情的经过是因为我正在写授权系统需要用到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); } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大孜然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值