当前位置: 首页 > news >正文

PHP压缩打包,下载目录或者文件,解压zip文件

函数

    /*** 压缩整个文件夹为zip文件* 本地需要绝对路径,服务器需要相对路径*/function makeZipFile($zip_path = '', $folder_path = '') {$rootPath = realpath($folder_path);$zip = new ZipArchive();
//        $zip->open($zip_path, ZipArchive::CREATE | ZipArchive::OVERWRITE);//这是压缩文件夹里面的文件$zip->open($zip_path, ZipArchive::CREATE);//这是压缩目录$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($rootPath),RecursiveIteratorIterator::LEAVES_ONLY);foreach ($files as $name => $file){if (!$file->isDir()){$filePath = $file->getRealPath();$relativePath = substr($filePath, strlen($rootPath) + 1);$zip->addFile($filePath, $relativePath);}}$zip->close();}

 应用方法

        //为了避免下载混乱,这里说了一个下载记录的,以下是以下载记录ID来区分,每次压缩的内容$downloadsID = 下载记录的ID;//下载地址$ExcelTmpDir = '压缩的主要目录地址';$isCompress = 0;//是否需要压缩,1=需要:用户判断最后是否需要进压缩打包$dataArr = array();//需要压缩的文件路径数据//循环数据,创建对应的目录,以及复制对应的图片文件到需要的目录里面foreach ($dataArr as $item){//目录名称$dirThemeName = '目录名称';//先创建对应的目录if(!is_dir($ExcelTmpDir.'/'.$downloadsID.'/'.$dirThemeName)){$ret=mkdir($ExcelTmpDir.'/'.$downloadsID.'/'.$dirThemeName,0755,true);if(!$ret)die('directory create faild!');}//再复制数据if (这里可以判断文件是否存在等,根据自己的业务来判断){$isCompress = 1;$imgArr = array(文件路径数组);//本地为绝对路径,服务器为相对路径foreach ($imgArr as $img){$imgName = '';//获取文件名称copy(substr($img,1),$ExcelTmpDir.'/'.$downloadsID.'/'.$dirThemeName.'/'.$imgName);//复制}}}//最后压缩打包if ($isCompress){//压缩文件路径$zip_file = $ExcelTmpDir.'/'.$downloadsID.'/'.date('YmdHis').'.zip';//需要压缩的文件夹路径$zip_dir = $ExcelTmpDir.'/'.$downloadsID;makeZipFile($zip_file,$zip_dir);header("Location: /".$zip_file);}

js下载

window.location = '压缩打包的应用方法接口地址'

以上为压缩打包并下载的整个流程,仅供参考学习。

 解压

$zip = new ZipArchive();
$zipName = '压缩包路径及名称';
$extractPath = '解压到的目录';if ($zip->open($zipName) === TRUE) {// 解压ZIP文件$zip->extractTo($extractPath);// 关闭ZIP文件$zip->close();echo '成功';
} else {echo '失败';
}

http://www.lryc.cn/news/407500.html

相关文章:

  • 后端面试题日常练-day08 【Java基础】
  • Linux:core文件无法生成排查步骤
  • 大模型学习资源
  • 约定(模拟赛2 T3)
  • Java推送xml数据进行http请求
  • Docker安装 OpenResty详细教程
  • 前端位运算运用场景小知识(权限相关)
  • 【云原生】Kubernetes中的DaemonSet介绍、原理、用法及实战应用案例分析
  • 使用框架构建React Native应用程序的最佳实践
  • Godot入门 02玩家1.0版
  • Docker-Compose配置zookeeper+KaFka+CMAK简单集群
  • Python中,集合几种基本运算
  • netsuite查询货品库存
  • Java 实现分页的几种方式详解
  • vite构建vue3项目hmr生效问题踩坑记录
  • 区块链赋能民生大数据
  • 10 Vue 特性要点
  • ESP32和mDNS学习
  • 学习SQL如何使用CASE语句查询分析设备状态
  • Gartner发布2024年零信任网络技术成熟度曲线:20项零信任相关的前沿和趋势性技术
  • React hook 之 useState
  • jenkins中shell脚本中使用构建参数化Groovy变量的四种方式
  • Robot Operating System——ParameterEventHandler监控Parameters的增删改行为
  • 计算机网络(Wrong Question)
  • Docker+consul容器服务的更新与发现
  • 全网最详细!! Linux 安装、配置教程
  • cocos creator 3学习记录01——如何替换图片
  • 【Android Compose】ListView效果
  • 【Pytorch实战教程】Pytorch中.detach()的详细介绍
  • AR 眼镜之-充电动画定制-实现方案