ThinkPHP获取远程图片并压缩下载

浏览:750 发布日期:2018/12/29 分类:功能实现 关键字: PHP压缩 下载
ThinkPHP获取远程图片并压缩下载
阿里云搞活动,想要抓紧买:https://promotion.aliyun.com/ntms/act/qwbk.html?userCode=4hy76kwx

控制器代码://导出图片
    public function daochu(){
        ini_set("memory_limit","-1");
        set_time_limit(0);

        //导出数据,实际数据可以是从mysql导出
        $data = [];
        $data[] = ['id'=>1,'name'=>'张三','shouji'=>'15098881234','qq'=>'\'947803117','weixin'=>'zouseu'];
        $data[] = ['id'=>2,'name'=>'李四','shouji'=>'15098881234','qq'=>'\'947803117','weixin'=>'zouseu'];


        $time = date('YmdHi');
        $path = 'upload/images/'.$time;

        //如果目标
        if (!is_dir($path)){
            mkdir($path);
        }

        //网上找的两张图片,实际应用中可以换成自己需要下载的文件
        $arr = [
                    'https://b-ssl.duitang.com/uploads/item/201311/19/20131119204800_HLkRx.thumb.1900_0.jpeg',
                    'https://b-ssl.duitang.com/uploads/blog/201401/02/20140102112513_zHitZ.thumb.1000_0.jpeg'
               ];

        //读取图片到服务器目录
        foreach ($arr as $val){
            $arr = pathinfo($val);

            $file = md5($val);
            $file = $file.'.'.$arr['extension'];

            if (!file_exists($path.'/'.$file)){
                $cont = file_get_contents($val);
                file_put_contents($path.'/'.$file,$cont);
            }
        }

        //压缩包名称
        $file = $time;

        //生成压缩包
        yasuo($path,$file);

        //删除图片
        deleteDir($path);
    }
控制器中用到的方法代码:/**
 * 循环压缩目录文件
 * @param $path 文件夹路径
 * @param $zip 压缩后zip名字及路径
 */
function addFileToZip($path, $zip)
{
    header("Content-type:text/html;charset=gbk");
    $arr = scandir($path);
//    print_r($arr);die;
    $i = 1;
    foreach ($arr as $val){
        if ($val != "." && $val != "..") {
            if (is_dir($path . "/" . $val)) {
                addFileToZip($path . "/" . $val, $zip);
            } else {
                //将文件加入zip对象
                $zip->addFile($path . "/" . $val,iconv('utf-8','gbk//ignore',$val));
//                $zip->addFile($path . "/" . $val,$val);
            }
        }
    }
    return;

}

/**
 * 压缩目录
 * $file 压缩文件名
 * $path 压缩的文件夹路径
 */
function yasuo($path,$file)
{
    $zip = new \ZipArchive();
//    $username = $_SESSION['adminUser'];
    $zipname = $file . '.zip';
    $zipPath = $path.'/' . $zipname;
    if ($zip->open("$zipPath", \ZipArchive::CREATE) === TRUE) {
        addFileToZip($path, $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
        $zip->close(); //关闭处理的zip文件
        //设置打包完自动下载
        header('Content-Type: application/zip');
        header('Content-disposition: attachment; filename=' . $zipname);
        header('Content-Length: ' . filesize($zipPath));
        readfile($zipPath);
        unlink($zipPath);
    }
}


/**
 * 删除文件夹
 */
function deleteDir($dir)
{
    if (!$handle = @opendir($dir)) {
        return false;
    }
    while (false !== ($file = readdir($handle))) {
        if ($file !== "." && $file !== "..") {       //排除当前目录与父级目录
            $file = $dir . '/' . $file;
            if (is_dir($file)) {
                deleteDir($file);
            } else {
                @unlink($file);
            }
        }

    }
    @rmdir($dir);
}
需要完整代码,请加群:282882201,在群文件中下载。

阿里云搞活动,想要抓紧买:https://promotion.aliyun.com/ntms/act/qwbk.html?userCode=4hy76kwx
评论( 相关
后面还有条评论,点击查看>>