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);
}
}

手机版 点击左上侧三条杠开通会员或者点右侧皇冠开通网页版 右上方开通会员,或者点右侧皇冠开通! 不会点这里看教程
© 版权声明
THE END
本站资源来自会员发布以及互联网收集,不代表本站立场,仅限学习交流使用,请遵循相关法律法规,请在下载后24小时内删除.如有侵权争议、不妥之处请联系本站删除处理!请用户仔细辨认内容的真实性,避免上当受骗!
点赞0 分享