public function downloadZip(){
$id = input('id');
//获取所有的材料
$data = DB::table('stuff_teengerapply')->field('file_url')->where(array('sid'=>$id))->select();
//创建压缩文件的地址
$zipName = ROOT_PATH.'public/upload'.time().'.zip';
//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释
$zip = new \ZipArchive;
//判断该压缩文件地址是否已创建
if ($zip->open($zipName, \ZIPARCHIVE::OVERWRITE | \ZIPARCHIVE::CREATE)!==TRUE) {
exit('无法打开文件,或者文件创建失败');
}
foreach($data as $val){
if(file_exists(ROOT_PATH.$val['file_url'])){
//addFile函数首个参数如果带有路径,则压缩的文件里包含的是带有路径的文件压缩
//若不希望带有路径,则需要该函数的第二个参数
$zip->addFile(ROOT_PATH.$val['file_url'], basename(ROOT_PATH.$val['file_url']));//第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下
}
}
$zip->close();//关闭
if(!file_exists($zipName)){
exit("无法找到文件"); //即使创建,仍有可能失败
}
//如果报错,检查服务器上面的压缩文件是否可以正确的解压,如果可以你就可以加一个ob_clean试一下报错是否还存在
//ob_clean();
header('Content-Type:text/html;charset=utf-8');
header('Content-disposition:attachment;filename='.basename($zipName));
$filesize = filesize($zipName);
readfile($zipName);
header('Content-length:'.$filesize);
}
PHP多文件压缩并下载
最新推荐文章于 2024-07-26 14:37:55 发布