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); // 删除压缩包 不占空间
    }

  

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

上一篇:Web基本概念


下一篇:js引入时的三种方式