php ZipArchive实现多文件打包下载实例
实例代码:
publicfunctiondownLoad($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($dataUrlas$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文件
publicfunctionunzip_file($file,$dir){
//实例化对象
$zip=newZipArchive();
//打开zip文档,如果打开失败返回提示信息
if($zip->open($file)!==TRUE){
die("Couldnotopenarchive");
}
//将压缩文件解压到指定的目录下
$zip->extractTo($dir);
//关闭zip文档
$zip->close();
}
获取解压文件目录
publicfunctionloopFun($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);
}
大家可以在本地测试下,感谢大家的学习和对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。