PHP多文件压缩并下载

    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);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值