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

Posted 满眼都是她

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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获取远程线上图片 压缩包格式让用户下载的主要内容,如果未能解决你的问题,请参考以下文章

PHP根据图片路径下载线上图片

Mac php7本地安装mongodb扩展以适配使用mongo扩展的线上老代码

php最强下载远程图片到本地代码

压缩包如何制作成二维码?

怎么压缩成Tar格式

PHP 获取压缩包大小