头像

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

2019-01-13 09:39:46 来源:PHP代码   浏览()   评论 ( 0 )   

HTML

<input type="button" onclick="window.location.href='{:url('daochu')}'" value="导出">


common.php

// 应用公共文件
/**
 * 循环压缩目录文件
 * @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);
}

控制器

class Index extends Controller
{
    public function index()
    {
        return $this->fetch();
    }
    //导出图片
    public function daochu(){
        ini_set("memory_limit","-1");
        set_time_limit(0);
        //导出数据,实际数据可以是从mysql导出
        $data = [];
        $data[] = ['id'=>1,'name'=>'张三','shouji'=>'xxx','qq'=>'\'111','weixin'=>'222'];
        $data[] = ['id'=>2,'name'=>'李四','shouji'=>'xxx','qq'=>'\'111','weixin'=>'222'];
        $time = date('YmdHi');
        $path = 'upload/images/'.$time;
        //如果目标
        if (!is_dir($path)){
            mkdir($path);
        }
        $arr = [
                    'http://phpdaima.com/uploads/item/201311/19/20131119204800_HLkRx.thumb.1900_0.jpeg',
                    'http://phpdaima.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);
    }
}


标签: php
声明:转载请注明来源(PHP代码)并保留原文链接:https://www.phpdaima.com//wenzhang-130.html
广告不存在
评论0

后面还有条评论,点击查看>>

温馨提示:为规范评论内容,垃圾评论一律封号...