fastadmin基于ZipArchive生成压缩文件下载到本地
21-05-25 02:00
1550
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; } }
-
Temp Mail - 临时邮箱地址生成·在线接收邮件
不用再担心垃圾邮件,广告邮件,黑客和机器人攻击。让您真实的邮箱保持干净和安全。Temp Mail提供临时、安全、匿名、免费的一次性电子邮件... 1115 0 25-01-14 -
映像总裁 SGImini系统备份还原
映像总裁MINI是映像总裁推出的简化版软件。尽管功能有所精简,它却是一款完全绿色、免费且易于使用的工具,为用户提供了三个核心功能,... 710 0 25-06-10 -
[Win] VEP视频转MP4工具提取工具(无需卡密)
vep格式用什么播放器要播放VEP格式的视频,你需要使用 WellPlayer、 极速影音 、 暴风影音 、 kmplayer 等多媒体播放器,或者使用格... 2006 0 24-05-31 -
白描ocr网页版-图片转文字,图片文字提取,网页OCR文字识别
白描网页版是一款免费的在线OCR文字识别工具,可以把图片、电子表格和扫描PDF的文字转换成可编辑的文件。白描网页版无广告,支持长图识别,... 1278 0 24-12-10 -
广播迷 - 在线听广播
广播迷可以在线收听各个地区的电台直播,自从智能手机纷纷取消FM功能后,就很少听广播了, 广播电台在线收听交流、分享平台,为全国广播听... 935 0 24-11-18 -
莫大毛笔体
1815 0 24-07-24 -
简单清爽的confirm确认对话框
420 0 21-06-02 -
格式工厂app_提供全方位的格式转换服务
格式工厂,这是一款在手机上功能卓越且操作简便的应用,专门为用户提供全面的格式转换服务。无论您是视频、音频还是图片的狂热爱好者,... 772 0 25-06-11
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~