/**
* 批量下载二维码
* @throws DataNotFoundException
* @throws DbException
* @throws ModelNotFoundException
*/
function uploadBatchCert(){
$data = $this->request->only(['cert_ids']);//合格证ID数组
$data['cert_ids'] = explode(',', $data['cert_ids']);
$cert = CertificateModel::field('certificate_name, certificate_path')
->where('certificate_id', 'IN', $data['cert_ids'])
->select();
$pinyin = new Pinyin();
$files = [];
foreach($cert as $key=>$value){
$certificate_path = basename($value['certificate_path']);//文件名
$extension = pathinfo($value['certificate_path'], PATHINFO_EXTENSION);//获取文件扩展名
$value['certificate_name'] = $pinyin->permalink($value['certificate_name'], '');
$certificate_name = $value['certificate_name'].'.'.$extension;//修改后文件名
$cert_name = str_replace($certificate_path, $certificate_name, $value['certificate_path']);
$files[$key]['path_name'] = iconv("utf-8", "gb2312", $cert_name);
// $files[$key]['path_name'] = $cert_name;
$files[$key]['path'] = $value['certificate_path'];
}
$mid_path = Env::get('root_path').'public/';
// $file_lj = str_replace("\\","/",$mid_path);
$path = str_replace("\\","/",$mid_path);
$time = time();
$zipName = '/qrcode/'.$time.'.zip';
$zip = new \ZipArchive();
if ($zip->open($path.$zipName, \ZIPARCHIVE::OVERWRITE | \ZIPARCHIVE::CREATE)!==TRUE) {
exit('无法打开文件,或者文件创建失败');
}
foreach($files as $val){
if(file_exists($path.$val['path'])){
//addFile函数首个参数如果带有路径,则压缩的文件里包含的是带有路径的文件压缩
//若不希望带有路径,则需要该函数的第二个参数
// $zip->addFile($path.$val['path'], basename($val['path_name']));
//print_r(basename($val['path_name']));
$zip->addFile($path.$val['path'], $val['path_name']);//第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下
}
}
$zip->close();//关闭
if(!file_exists($path.$zipName)){
exit("无法找到文件"); //即使创建,仍有可能失败
}
//如果不要下载,下面这段删掉即可,如需返回压缩包下载链接,只需 return $zipName;
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename='.basename($zipName)); //文件名
header("Content-Type: application/zip"); //zip格式的
header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
header('Content-Length: '. filesize($path.$zipName)); //告诉浏览器,文件大小
@readfile($path.$zipName);
exit();
}
zip批量下载
最新推荐文章于 2024-04-09 20:45:11 发布