fastadmin基于ZipArchive生成压缩文件下载到本地
21-05-25 02:00
1332
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; } }
-
php调用微信公众平台接口
php开发微信公众平台包括获取access_token,access_token换取ticket,根据ticket获取二维码,微信公众号上传文件,公众号创建菜单,菜单点... 1154 0 24-05-24 -
Listen1音乐播放器-支持全平台的中国免费音乐聚合软件
Listen1音乐播放器软件,它集成了多个音乐平台的搜索和播放功能。用户可以通过 Listen1 在一个应用程序中访问并收听来自不同音乐平台的歌... 924 0 24-05-31 -
YEELOGO_logo在线制作
“Yee Logo”是一个简单易用的免费logo在线制作平台,只需两分钟,就可以设计精美的LOGO,拥有海量模版,用最简单的方法,做最好看的logo... 1024 0 25-01-14 -
TCP/IP路由技术
经过10多年的快速发展,中国的互联网已经进入了一个崭新的天地,目前的宽带用户数已跃居世界第二(仅次于美国)。互联网在中国的应用正逐步... 1156 0 24-05-24 -
课程预约小程序
课程预约小程序是一款专为用户提供预约课程服务的应用程序。以下是该小程序的功能介绍:活动资讯:小程序会展示最新的课程活动资讯,包括讲... 980 0 24-09-11 -
html上传图片
335 0 21-06-02 -
守望先锋资讯小程序
微信小程序是一种轻量级的应用开发平台,主要针对移动端,由腾讯公司推出,旨在提供便捷的、无需下载安装即可使用的应用体验。"守望先锋资... 792 0 24-10-27 -
GifCam视频gif动画录制工具
GifCam中文版是一款方便易用的动画录制工具,该软件操作简单,下载完成后执行“GifCam.exe”便可开启,用户可以利用滑鼠拖曳视窗的四周边... 528 0 21-07-16
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~