您的位置:首页 > 编程语言 > PHP开发

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

2019-11-01 07:06 1586 查看

实例代码:

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);

}

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

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息