TP5制作图片压缩包

目标:将多张图片制成在一个压缩包内,供调取使用

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(),查看一下

TP5制作图片压缩包_第1张图片

可以直接用

至于去调用的话,这个zip是php内部封装的,不用像使用Excel一样的去在文件头部写引入什么的

也可以直接利用phpstrom自己的纠错处理功能,自己去引入处理了

$zip = new \ZipArchive();

需要注意的是,写文件路径的时候,很多的博客博主,都是示例图片,同目录下面的什么test.jpg,导致在实际使用的时候,还是会遇到很多的问题,我暂时将我遇到的两个问题给例举说明一下,希望能帮到其他人

问题一:

        不生成文件,不生成图片,打印zip文件路径,和图片路径发现确实是正确的.需要注意的是

不能使用

$_SERVER['SERVER_NAME'].$url;

应该用ROOT_PATH代替,上面那个会打印出网址来,但是目录结构在使用时候是错的

ROOT_PATH是实际的绝对路径,是可以读取到图片的

问题二:

打印目录有问题

它会解析绝对路径里面的斜杠,然后建立好几层的文件夹

TP5制作图片压缩包_第2张图片

TP5制作图片压缩包_第3张图片

这个时候,给重新改一下名字就好

TP5制作图片压缩包_第4张图片

因为我这个上传的图片都是jpg,所以直接都是jpg了,图片格式不同的话,可以提前先获取图片格式,然后重命名成对应格式即可

TP5制作图片压缩包_第5张图片直接目录结构就对了,用str_replace()去转义,也没啥作用,并不能解决问题

你可能感兴趣的:(php)