目标:将多张图片制成在一个压缩包内,供调取使用
public function test()
{//引入压缩包类$zip = new \ZipArchive();//新定义一个zip包$zipname = ROOT_PATH.'/public/zip/'.date("YmdHis").rand(111,999).'.zip';if ($zip->open($zipname, \ZipArchive::CREATE) === true){$zip->addFile(ROOT_PATH.$request['permit'],date("YmdHis").rand(111,999).'.jpg');$zip->addFile(ROOT_PATH.$request['bank_pic'],date("YmdHis").rand(111,999).'.jpg');$zip->addFile(ROOT_PATH.$request['legal_cert_pic'][0],date("YmdHis").rand(111,999).'.jpg');$zip->addFile(ROOT_PATH.$request['legal_cert_pic'][1],date("YmdHis").rand(111,999).'.jpg'); $zip->close();}}
一般的项目都是会有这个的压缩包的类的
可以先phpinfo(),查看一下
可以直接用
至于去调用的话,这个zip是php内部封装的,不用像使用Excel一样的去在文件头部写引入什么的
也可以直接利用phpstrom自己的纠错处理功能,自己去引入处理了
$zip = new \ZipArchive();
需要注意的是,写文件路径的时候,很多的博客博主,都是示例图片,同目录下面的什么test.jpg,导致在实际使用的时候,还是会遇到很多的问题,我暂时将我遇到的两个问题给例举说明一下,希望能帮到其他人
问题一:
不生成文件,不生成图片,打印zip文件路径,和图片路径发现确实是正确的.需要注意的是
不能使用
$_SERVER['SERVER_NAME'].$url;
应该用ROOT_PATH代替,上面那个会打印出网址来,但是目录结构在使用时候是错的
ROOT_PATH是实际的绝对路径,是可以读取到图片的
问题二:
打印目录有问题
它会解析绝对路径里面的斜杠,然后建立好几层的文件夹
这个时候,给重新改一下名字就好
因为我这个上传的图片都是jpg,所以直接都是jpg了,图片格式不同的话,可以提前先获取图片格式,然后重命名成对应格式即可
直接目录结构就对了,用str_replace()去转义,也没啥作用,并不能解决问题