php多张图片下载(zip压缩)

代码快实现逻辑

简单实现多张图片下载功能

  1. ZipArchive 是php自带的类库可以使用这个自带的类库进行zip下载的实现
  2. zipname  /var/www/imgzip.zip 这个是定义一个目录下面那个$zip->open创建切判断是否有这个文件。是否能打开这个文件
  3. 分两种情况第一种是图片根代码在一个服务器则不需要再次下载图片直接可以将图片写入zip文件然后进行下载。第二种情况是图片在七牛云服务器或者在别的DNS服务上则需要利用file_get_contents抓取然后根据二进制流把图片直接写入你创建好的zip文件里面也就是$zip->addFromString进行实现的
  4. 然后就是下载图片 然后删除创建成功的zip包
        $zip = new \ZipArchive ();

        $zipname = "/var/www/imgzip.zip";

        if ($zip->open($zipname, \ZIPARCHIVE::CREATE)!==TRUE) {
            echo '无法打开文件,或者文件创建失败';die;
        }

        $fileArr = explode(',',$data['record_con']);//多张图片的地址
        foreach ( $fileArr as $file ) {
            $url = $this->qnDownload($file);
            //这里将服务器上的文件添加到下载内容中,并重新赋值下载zip文件内该文件的路径
            $fileContent = file_get_contents($url);
            //添加图片。参数1 文件名字  参数二 二进制流
            $zip->addFromString(basename($file), $fileContent);
//            $zip->addFile (  $url,basename($url));
        }

        $zip->close ();
        header ( "Content-Type: application/zip" );
        header ( "Content-Transfer-Encoding: Binary" );
        header ( "Content-Length: " . filesize ( $zipname ) );
        header ( "Content-Disposition: attachment; filename=\"" . basename ( $zipname ) . "\"" );

        readfile ( $zipname );
         @unlink ( $zipname );

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值