TP5.1批量下载文件到ZIP并保存原有的文件名称

TP5.1批量下载无需外部插件进行批量下载zip

			//获取所有下载文件ID
			$idList = explode(",",$info['idList']);

            //批量下载遍历文件地址
            $files = [];
            for($i = 0;$i<count($idList);$i++)
            {
                $contract = Contract::get($idList[$i]);
                $downSrc = Env::get('root_path').'public'.$contract['contractfile'];
                array_push($files,$downSrc);
            }
			//TP自带的类
            $zip = new \ZipArchive;
            //压缩文件名
            $filename = Date('Y-m-d').'合同批量下载.zip';
            //新建zip压缩包
            $zip->open($filename,\ZIPARCHIVE::OVERWRITE | \ZIPARCHIVE::CREATE);
            //循环压缩文件
            foreach($files as $key => $value){
                $fileStr = trim(strrchr($value,'/'),'/');//获取文件路径
                $str = substr($fileStr,32);//获取后缀
                //查询文件名称(若之前保存文件为源文件名保存可跳过该步骤)
                $fileStr_b = Contract::where('contractfile','like','%'.$fileStr)->find()['contractname'];
                $zip->addFile($value,basename($fileStr_b.$str));
            }
            //打包zip
            $zip->close();
            header("Cache-Control:public");
            header("Content-Description: File Transfer");
            header("Content-disposition: attachment; filename=".basename($filename));//文件名
            header("Content-Type:application/zip"); //格式为zip
            header("Content-Transfer-Encoding:binary"); //这是二进制文件
            header("Content-Length:".filesize($filename)); //文件大小
            @readfile($filename);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值