微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP获取远程线上图片 压缩包格式让用户下载

   /**
     * 下载图片生成压缩包
     * @param $data    图片数组,一维
     * @param $dir     存放路径
     * @return string
     */
    public function demoOne()
    {
        //线上图片链接
        $url = ["https://z3.ax1x.com/2021/05/22/gLICwR.jpg","https://z3.ax1x.com/2021/05/22/gLTRF1.jpg"];
        //保存的位置
        $dir = "img/";
        //判断目录是否存在 不存在则创建
        if (!file_exists($dir)) {
            mkdir($dir, 0777, true);
        }

        // 压缩包文件名
        $zipName = date('His') . mt_rand(1000, 9999) . '.zip';
        // 文件路径
        $zipNameUrl = $dir . $zipName;
        $zip = new \ZipArchive();
        if ($zip->open($zipNameUrl, \ZipArchive::OVERWRITE) !== true) {
            //OVERWRITE 参数会覆写压缩包的文件 文件必须已经存在
            if ($zip->open($zipNameUrl, \ZipArchive::CREATE) !== true) {
                // 文件不存在则生成一个新的文件 用CREATE打开文件会追加内容至zip
                return '下载失败,文件夹不存在';
            }
        }
        foreach ($url as $file) {
            //抓取图片内容  file_get_contents可用curl代替 curl效率高
            $fileContent = file_get_contents($file);
            //添加图片
            $zip->addFromString(basename($file), $fileContent);
        }
           $zip->close();
        //没有文件
        if (!file_exists($zipNameUrl)) {
            return '下载失败,图片不存在或无法下载';
        }
        header("Cache-Control: public");
        header("Content-Description: File Transfer");
        header('Content-disposition: attachment; filename=' . $zipName); //文件名
        header("Content-Type: application/zip"); //zip格式的
        header("Content-transfer-encoding: binary"); //告诉浏览器,这是二进制文件
        header('Content-Length: ' . filesize($zipNameUrl)); //告诉浏览器,文件大小

        flush();
        @readfile($zipNameUrl);
        unlink($zipNameUrl); // 删除压缩包 不占空间
    }

  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐