fastadmin基于ZipArchive生成压缩文件下载到本地
21-05-25 02:00
1361
0
PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启。
数据库图片是多图片以字符串的形式保存,需要转换为数组
前台ajax提交id为多选id,返回压缩后的文件地址,然后下载
/** * 整理下载图片 * 复制图片到统一文件夹,以id作为文件夹名称 * $ids 选中的id [1,2,3] */ public function checks($ids = ''){ $ids = $this->request->post("ids");//页面传值的id $id = explode(",", $ids);//字符串转数组 if (count($id) > 0) { $download_name = Random::uuid();//自动生成文件夹名称 foreach ($id as $v) { $row = $this->model->get(['id' => $v]);//查询数据 $rows = $row->toArray(); if ($rows['id'] && $rows['group_images']) {//group_images:数据库保存图片的字段 $dir = iconv("UTF-8", "GBK", "./ziprar/" . $download_name . "/" . $rows['id']);//图片文件夹放在根目录ziprar里面 if (!file_exists($dir)) {//创建文件夹 mkdir($dir, 0777, true); } $gimgs = explode(",", $rows['group_images']);//图片路径整理 foreach ($gimgs as $vs) { $name_imgs = explode("/", $vs); $names_imgs = $name_imgs['3']; $old_img = ROOT_PATH . 'public' . $vs; $new_img = "./ziprar/" . $download_name . "/" . $rows['id'] . "/" . $names_imgs; if (!file_exists($new_img)) { copy($old_img, $new_img);//复制图片 } } } } $this->zips($download_name); } } /** * 压缩文件夹 */ function addFileToZip($path,$zip){ $handler=opendir($path); //打开当前文件夹$path指定的路径。 while(($filename=readdir($handler))!==false){ if($filename != "." && $filename != ".."){//文件夹文件名字为'.'和‘..',不要对他们进行操作 if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归 $this->addFileToZip($path."/".$filename, $zip); }else{ //将文件加入zip对象 $zip->addFile($path."/".$filename); } } } @closedir($path); } /** * 使用ZipArchive生成压缩文件 */ public function zips($download_name){ $zip=new \ZipArchive(); if($zip->open("./ziprar/".$download_name.'.zip', \ZipArchive::CREATE) === TRUE){ $this->addFileToZip("./ziprar/$download_name"., $zip); $zip->close(); //关闭处理的zip文件 } //判断域名是http还是https if ( !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') { $h= 'https://'.$_SERVER['HTTP_HOST']; } elseif ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) { $h= 'https://'.$_SERVER['HTTP_HOST']; } elseif ( !empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') { $h= 'https://'.$_SERVER['HTTP_HOST']; }else{ $h= 'http://'.$_SERVER['HTTP_HOST']; } $url = $h."/ziprar/".$download_name.".zip"; //下载文件名 $file_dir = ROOT_PATH . 'public/ziprar/' .$download_name.'.zip'; $this->deldir(ROOT_PATH . 'public/ziprar/' .$download_name.'/'); $this->success('压缩成功,下载中...', $url,'压缩成功'); } /** * 删除文件夹,只保留压缩文件 */ function deldir($dir) { //先删除目录下的文件: $dh=opendir($dir); while ($file=readdir($dh)) { if($file!="." && $file!="..") { $fullpath=$dir."/".$file; if(!is_dir($fullpath)) { unlink($fullpath); } else { $this->deldir($fullpath); } } } closedir($dh); //删除当前文件夹: if(rmdir($dir)) { return true; } else { return false; } }
-
合肥工业大学共创考研数学资料
2013共创数一5套卷完整版.pdf2013共创数三5套卷完整版.pdf2013共创数二3套卷完整版.pdf2014共创数一5套卷完整版.pdf2014共创数三5套卷完整... 1164 0 24-08-19 -
百思不得姐小程序
百思不得姐是一款备受欢迎的娱乐社交应用,其微信小程序版本为用户提供了一个便捷的平台,让用户在微信环境中也能享受到各种有趣的短视频和... 790 0 24-09-16 -
离职时必须清理的电脑文件,不然你的秘密就被人看到了
打开C盘,找到用户打开Administrator再打开文档找到Wechat Files这里面就是你的微信聊天记录选择这几个文件夹删掉再返回上一级文件夹找到W... 355 0 21-11-22 -
Air Explorer ProPortable多网盘管理工具
Air Explorer Pro是一款专业的云盘服务软件工具。软件支持直接管理云盘中的文件,支持不同云盘之间的复制粘贴等功能。非常方便快捷,软件... 1165 0 24-05-31 -
bootstrap v4.2.1响应式主题模板
1308 0 24-09-03 -
12个值得推荐的国外著名大学免费数字图书馆
想要看珍贵的手稿图像,艺术品,史前古器物?想要了解世界各地的风土人情?想要查阅国外经典著作?数字化图书馆的优越之处在于它既可以保存... 870 0 25-03-03 -
悦跑圈小程序
【悦跑圈微信小程序】是专为运动健身爱好者设计的一款应用程序,它利用微信小程序平台,无需下载安装即可在微信内方便地使用。该程序的核心... 1198 0 24-09-16 -
扫码购物商城小程序
"扫码购物商城"功能是微信小程序的一个典型应用场景。扫码功能利用微信小程序的扫描二维码/条形码API,用户可以通过手机摄像头扫描商品的条... 801 0 24-10-27
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~