PHP 多文件打包下载 zip
Posted 风吹屁股凉冰冰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 多文件打包下载 zip相关的知识,希望对你有一定的参考价值。
<?php $zipname = ‘./photo.zip‘; //服务器根目录下有文件夹public,其中包含三个文件img1.jpg, img2.jpg, img3.jpg,将这三个文件打包下载,并重设下载的目录结构及文件名 file1/newimg1.jpg, file1/newimg2.jpg, file2/newimg.jpg $fileArr[0] = array(‘file_path‘ => ‘./public/img1.jpg‘, ‘down_path‘ => ‘file1/newimg1.jpg‘); $fileArr[1] = array(‘file_path‘ => ‘./public/img2.jpg‘, ‘down_path‘ => ‘file1/newimg2.jpg‘); $fileArr[2] = array(‘file_path‘ => ‘./public/img3.jpg‘, ‘down_path‘ => ‘file2/newimg.jpg‘); //要使用该类,需要先启用 extension=php_zip.dll $zip = new ipArchive (); $res = $zip->open ( $zipname, ipArchive::CREATE ); if ($res === TRUE) { foreach ( $fileArr as $file ) { //这里将服务器上的文件添加到下载内容中,并重新赋值下载zip文件内该文件的路径 $zip->addFile ( $file [‘file_path‘], $file [‘down_path‘] ); } } $zip->close (); header ( "Content-Type: application/zip" ); header ( "Content-Transfer-Encoding: Binary" ); header ( "Content-Length: " . filesize ( $zipname ) ); header ( "Content-Disposition: attachment; filename="" . basename ( $zipname ) . """ ); readfile ( $zipname ); //如不删除,则在服务器上会有 $zipname 这个zip文件 @unlink ( $zipname ); /* 下载后的 photo.zip 压缩包内包含两个文件夹 file1,file2。file1内包含文件为 newimg1.jpg,newimg2.jpg ,file2内包含文件为 newimg.jpg photo.zip -- file1 -- newimg1.jpg -- newimg2.jpg -- file2 -- newimg.jpg */
以上是关于PHP 多文件打包下载 zip的主要内容,如果未能解决你的问题,请参考以下文章
Java实现打包压缩文件或文件夹生成zip以实现多文件批量下载
PHP扩展类ZipArchive实现压缩Zip文件和文件打包下载
PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载 && Linux下的ZipArchive配置开启压缩