这篇文章将为大家详细讲解有关如何在php中使用ZipArchive对多文件进行打包下载,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
实例代码:
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对多文件进行打包下载就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。