JAVA、PHP、前端、APP、网站开发 - 开发技术学习

开发技术学习 » 编程开发 » php压缩文件,php打包下载,PHP创建ZIP档案文件技巧

php压缩文件,php打包下载,PHP创建ZIP档案文件技巧

今天在做THINKPHP项目中下载的时候需要将多个文件合并到一个压缩包里面再下载! 以前没有做这种的压缩. 于是查了一下php压缩文件,PHP创建ZIP相关关键词 今天用到的并改了一下,php文件打包函数: [php] /** * 文件打包,将文件加入zip中 **/ public function addZip($file, $filename = null, $zipName = null){ $zip = new ZipArchive(); $root = $_SERVER["DOCUMENT_ROOT"]; if (!$zipName){ $zipName = './Public/Uploads/Download/'.time().'.zip'; } if (!file_exists($zipName)){ if ($zip->open($zipName,ZIPARCHIVE::CREATE) !== TRUE){ exit('无法打开文件,或者文件创建失败'); } }else{ if ($zip->open($zipName, ZIPARCHIVE::OVERWRITE) !== TRUE){ exit('无法打开'.$zipName.'文件'); } } //dump($zipName); /**判断是是否数组**/ if (is_array($file)){ //dump($file); foreach ($file as $k=>$v){ $zip->addFile($v,basename(strrchr($v,'/'))); } }else{ if (!$filename){ $filename = strrchr($file,'/'); } $zip->addFile($v,basename($filename)); } $zip->close(); if(!file_exists($zipName)){ exit("无法找到文件"); //即使创建,仍有可能失败。。。。 } return $zipName; } public function downloadfile($filepath, $newfilename = null, $unlink = null) { $filename = $filepath; if (!is_file($filename)){ $this->error('文件'.$filename.'已经被管理员删除!'); } if (!$newfilename){ $newfilename = strrchr($filepath, '/'); } $ua = $_SERVER["HTTP_USER_AGENT"]; $encoded_filename = urlencode($newfilename); $encoded_filename = str_replace("+", "%20", $encoded_filename); header('Content-Type: application/octet-stream'); if (preg_match("/MSIE/", $ua)) { header('Content-Disposition: attachment; filename="' . $encoded_filename . '"'); } else if (preg_match("/Firefox/", $ua)) { header('Content-Disposition: attachment; filename*="utf8''' . $newfilename . '"'); } else { header('Content-Disposition: attachment; filename="' . $newfilename . '"'); } $fp = fopen($filename, 'rb'); fpassthru($fp); fclose($fp); if ($unlink) { unlink($filename); } } [/php] 这里因为是新生成的zip文件,对其它用户没有用,同时这个内容也是变化的,所以最后我们下载过后删除了zip文件

站点声明:部分内容源自互联网,为传播信息之用,如有侵权,请联系我们删除。

© Copyright 2011-2024 www.kfju.com. All Rights Reserved.
超级字帖 版权所有。 蜀ICP备12031064号      川公网安备51162302000234