php thinkphp zip 图片 批量 下载 导出

27 篇文章 1 订阅
    /*导出图片*/
    public function exportimg(){
        $img_array = [
            ['id'=>1,'cover_img'=>'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png'],
            ['id'=>2,'cover_img'=>'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png'],
            ['id'=>3,'cover_img'=>'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png'],
            ['id'=>4,'cover_img'=>'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png'],
        ];
        $arr = [];
        $local = './dow_img/';//图片下载本地路径
        foreach($img_array as $kk=>$vv){
            /*将远程图片下载到本地*/
            $file_name = $vv['id'].'.jpg';//图片名称
            $this->httpTolocal($vv['cover_img'],$local,$file_name);
            $src = $local.$file_name;
            $arr[] = ['name'=>$file_name,'src'=>$src,'id'=>$vv['id']];
        }
        $name = 'zip名称';//zip名称
        $dir = './zip/';//zip所在目录
        /*判断是否存在目录*/
        if(!file_exists($dir)){
            mkdir($dir,777);
        }
        $zip = new \ZipArchive();
        $file_name = $dir.$name.'.zip';

        $res = $zip->open($file_name,\ZipArchive::CREATE);//创建zip
        if($res){
            foreach($arr as $a){
                $zip_dir = 'dow_img/'.$a['id'].'_img/';//压缩到指定文件夹路径
                $zip->addFile($a['src'], $zip_dir.$a['name']);
            }
            $zip->close();
            //清空(擦除)缓冲区并关闭输出缓冲
            ob_end_clean();
            //下载建好的.zip压缩包
            header("Access-Control-Allow-Origin: *"); // 允许任意域名发起的跨域请求
            header('Access-Control-Allow-Headers: X-Requested-With,X_Requested_With');
            header("Content-Type: application/force-download");//告诉浏览器强制下载
            header("Content-Transfer-Encoding: binary");//声明一个下载的文件
            header('Content-Type: application/zip');//设置文件内容类型为zip
            header('Content-Disposition: attachment; filename='.$name.'.zip');//声明文件名
            header('Content-Length: '.filesize($file_name));//声明文件大小
            error_reporting(0);
            //将欲下载的zip文件写入到输出缓冲
            readfile($file_name);
            //将缓冲区的内容立即发送到浏览器,输出
            flush();
            unlink($file_name);//导出zip 后,原先的文件夹清空(视情况而操作)
            foreach($arr as $d){
                unlink($d['src']);//删除下载下来的本地图片
            }
            exit;
        }else{
            $zip->close();
            $this->error('无法创建zip');
        }
    }
    /**
     * 下载网络图片到本地
     *
     * @param $url 网络地址
     * @param $local 本地路径 ./dowimg/
     * @param $file_name 图片名称.jpg
     * */
    public function httpTolocal($url='https://www.baidu.com/img/bd_logo1.png',$local='./',$file_name=''){
        if(empty($file_name)){
            $file_name = rand(1000,9999).'.jpg';
        }
        $state = @file_get_contents($url,0,null,0,1);//获取网络资源的字符内容
        if($state){
            $filename = $local.$file_name;//文件名称与路径
            if(!file_exists($local)){
                mkdir($local,777);
            }
            ob_start();//打开输出
            readfile($url);//输出图片文件
            $img = ob_get_contents();//得到浏览器输出
            ob_end_clean();//清除输出并关闭
            $size = strlen($img);//得到图片大小
            $fp2 = @fopen($filename, "a");
            fwrite($fp2, $img);//向当前目录写入图片文件,并重新命名
            fclose($fp2);
            return 1;
        } else{
            return 0;
        }
    }

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昊喵喵博士

大哥你真帅,小姐姐你真漂亮

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值