发布于:2023-06-30 10:57 阅读次数:622 作者:云码素材 分类:技术分享 关键词:文件压缩
PHP将文件夹的文件压缩到Zip包里代码
事情的经过是因为我正在写授权系统需要用到Zip相关的函数,因为Zip相关函数是PHP的扩展功能,之前没有了解过,还有太懒了一直拖着,
直到今天我才写出来实现相关功能。
以下是代码:
<?php
/*
*云码素材版权所有
*/
# 将文件夹的文件压缩到文件里
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);
}
}
我要加群:资源共享的时代,不要再单打独斗!加小编微信号加入群:xnynews(备注:云码素材入群),qq群号:202498279,一起技术学习,资源分享!
免责声明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
热门标签
推荐模板

Light Year Admin后台模板 v4 iframe版本 基于Bootstrap 4.4.1
2024-10-20 22:57 浏览:567
热门文章
2022-05-10 08:48 浏览:31394
2Tik Tok 深田咏美抖音视频100+合集资源免费下载【绿色】
2022-10-31 08:42 浏览:30133
2022-03-27 09:29 浏览:16056
2022-09-11 15:02 浏览:13251
2020-04-13 15:31 浏览:12649
6免费使用chatgpt3种方式 chatgpt国内入口无需梯子
2023-04-23 17:52 浏览:11104
2022-09-08 10:28 浏览:10147
2022-04-13 14:31 浏览:9862
9三个开源的php论坛bbs源码 可自建 圈子 帖子社区网站!
2020-09-15 21:34 浏览:9747
2019-08-28 17:28 浏览:8988