php将文件夹的文件压缩到zip包里-云顶4008手机登录网页

php将文件夹的文件压缩到zip包里
发布时间:2023-06-30 00:00:00作者:cumin浏览:未知 分类:好玩的网页代码及装饰朗读:

事情的经过是因为我正在写授权系统需要用到zip相关的函数,因为zip相关函数是php的扩展功能,之前没有了解过,还有太懒了一直拖着,直到今天我才写出来实现相关功能。

以下是代码:

/*
* cumin云云顶4008手机登录网页的版权所有
*/

# 将文件夹的文件压缩到文件里
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);
}
}
标签:
收藏分享支持举报

免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,云顶4008手机登录网页的版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

请先后发表评论 (・ω・)
  • 全部评论(0
    还没有评论,快来抢沙发吧!
作者信息
4文章数
0粉丝
author views
作者:cumin
签名:php程序定制/修复加qq2937978586,不禁言千人站长群:678484243
感谢您的支持

 

 

举报
 
 
网站地图