PHP多文件打包并下载压缩包
/**
* @name 展厅详情图-获取展厅图片大小
* @uses 获取展厅图片大小
* @method GET
* @author 管舒琪
* @create 2022/7/27 11:51
* @request
* @param string *hui 项目ID
* @param string *zguan 展馆号 例:5.1
* @response 返回内容介绍,如“返回JSON结构体,具体键值如下”
* @return string result success:成功 fail:失败
* @return string Code 状态码 200:成功,204:失败
* @return string scalar 资料大小 字节形式
*/
public function actionGetDownloadSize()
{
// $hui = $this->get('hui');
// $zguan = $this->get('zguan');
$hui = 317;
$zguan = '5.1';
if(empty($hui)||empty($zguan)){
$this->failReturn(204,'缺少必选参数');die;
}
$query = BoothHuiExhibition::find();
$query->select('id,guan_img');
$query->where(['hui_id'=>$hui,'exhibition_nums'=>$zguan]);
$data = $query->asArray()->all();
if(empty($data)){
$this->failReturn(204,'数据为空');die;
}
$size = 0;//文件不存在的数量
foreach ($data as $k => $v){
$filename = str_replace('\\','/',dirname(dirname(dirname(__DIR__))).'/web'.$v['guan_img']);
if(file_exists($filename)){
$size += filesize($filename);
}
}
$this->successReturn($size,'获取成功');
}
/**
* @name 展厅详情-下载展厅详情图
* @uses 下载展厅详情图
* @method GET
* @author 管舒琪
* @create 2022/7/27 14:40
* @request
* @param string *hui 项目ID
* @param string *zguan 展馆号 例:5.1
* @response 返回内容介绍,如“返回JSON结构体,具体键值如下”
* @return string result success:成功 fail:失败
* @return string Code 状态码 200:成功,204:失败
* @return string scalar 压缩文件名称
*/
public function actionRawCh()
{
// $hui = $this->get('hui');
// $zguan = $this->get('zguan');
$hui = 317;
$zguan = '5.1';
if(empty($hui)||empty($zguan)){
$this->failReturn(204,'缺少必选参数');die;
}
$huiInfo = HuiZhan::findOne($hui);
$query = BoothHuiExhibition::find();
$query->select('id,guan_img');
$query->where(['hui_id'=>$hui,'exhibition_nums'=>$zguan]);
$data = $query->asArray()->all();
if(empty($data)){
$this->failReturn(204,'数据为空');die;
}
$size = 0;//文件不存在的数量
foreach ($data as $k => $v){
$filename = str_replace('\\','/',dirname(dirname(dirname(__DIR__))).'/web'.$v['guan_img']);
if(file_exists($filename)){
$size += filesize($filename);
}
}
//如果图片都不存在
if($size/1024 > 1024*200){
$this->failReturn(204,'下载资料文件过大');die;
}
$zip = new \ZipArchive();//PHP内置压缩函数
$filename = $zguan.'展厅'.$huiInfo->hui_nickname.'设施图.zip';
$zip->open('./'.$filename,$zip::CREATE);
$empty = 0;//文件不存在的数量
foreach ($data as $k => $v){
$file = str_replace('\\','/',dirname(dirname(dirname(__DIR__))).'/web'.$v['guan_img']);
if(file_exists($file)){
$fileData = file_get_contents($file);
$url = explode('/',$v['guan_img']);
// $zip->addEmptyDir(str_replace('/','-',$value['czs_number']).'/'.$val['liao_name']);
$zip->addFromString(end($url), $fileData);
$empty = $empty+1;
}
}
//如果图片都不存在
if($empty==0){
$this->failReturn(204,'文件不存在');
}
$zip->close();
$this->successReturn($filename,'已生成压缩包');
}
版权声明:本文为weixin_45636482原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。