php教程

超轻量级php框架startmvc

php ZipArchive实现多文件打包下载实例

更新时间:2020-04-13 03:37:12 作者:startmvc
实例代码:publicfunctiondownLoad($dataUrl,$saveName){$datalist=[ROOT_PATH.'/public/introduce/110.docx',ROOT_PATH.'/

实例代码:


public function downLoad($dataUrl,$saveName)
 {
 $datalist = [
 ROOT_PATH.'/public/introduce/110.docx',
 ROOT_PATH.'/public/upfile/110.zip'
 ];
// print_r($datalist);die;
 $filename = ROOT_PATH.'\public\/'.$saveName.'.zip';
 if(file_exists($filename)){
 unlink($filename);
 }

 $zip = new \ZipArchive();
 if ($zip->open($filename,\ZipArchive::CREATE)!== true){
 exit('无法打开文件,或者文件创建失败');
 }

 foreach ($dataUrl as $index => $item) {
 if (DIRECTORY_SEPARATOR=='\\'){
 $item = str_replace('/',DIRECTORY_SEPARATOR,$item);
 $filename = str_replace('/',DIRECTORY_SEPARATOR,$filename);
 }
// var_dump($item);
// var_dump(file_exists($item));die;
 if (file_exists($item)){
 $zip->addFile($item,basename($item));
 }
 }

 $zip->close();
 if(!file_exists($filename)){
 exit("无法找到文件"); //即使创建,仍有可能失败
 }
 header('Content-Type: application/zip');
 header('Content-disposition: attachment; filename='.basename($filename));
 header('Content-Length: ' . filesize($filename));
 @readfile($filename);
     @unlink ( $filename );
}

注意:里面的路径全部用绝对路径,不然会找不到文件

附赠其他操作:

解压缩zip文件


public function unzip_file($file, $dir){ 

 // 实例化对象 

 $zip = new ZipArchive() ; 

 //打开zip文档,如果打开失败返回提示信息 

 if ($zip->open($file) !== TRUE) { 

 die ("Could not open archive"); 

 } 

 //将压缩文件解压到指定的目录下 

 $zip->extractTo($dir); 

 //关闭zip文档 

 $zip->close(); 

 }

获取解压文件目录


public function loopFun($dir) 

 { 

 $handle = opendir($dir.".");

 //定义用于存储文件名的数组

 $array_file = array();

 while (false !== ($file = readdir($handle)))

 {

 if ($file != "." && $file != "..") {

 $array_file[] = $dir.'/'.$file; //输出文件名

 }

 }

 closedir($handle);

 return $array_file;

 //print_r($array_file);

 }

大家可以在本地测试下,感谢大家的学习和对脚本之家的支持。

php ZipArchive 文件打包