• php zip包上传


    /**
     * Notes: 人脸数据-图片的zip压缩包上传
     * Created by xxg@seabig.cn
     * DateTime: 2020-01-06 15:25
     */
    public function zipUploads()
    {
        $this->_globals();
        if (!$_FILES) {
            die(json_encode(array("status" => "false", "message" => "上传失败,请上传文件")));
        }
        //获取压缩包
        $file = $_FILES['file'];
        //获取文件夹名
        $name = substr($file['name'], 0, strpos($file['name'], '.'));
        //定义文件保存路径
        $filepath = _FILE_PATH . "/face/" . date("Y") . "/" . date("m") . "/" . date("d");
        //递推创建文件夹
        $this->mkpath($filepath);
        //移动文件
        $movepath = $filepath . "/" . $file['name'];
        $res = move_uploaded_file($file['tmp_name'], $movepath);
        if ($res) {
            //实例化ZipArchive类
            $zip = new ZipArchive();
            //打开压缩文件,打开成功时返回true
            if ($zip->open($filepath . "/" . $_FILES['file']['name']) === true) {
                //解压文件到获得的路径a文件夹下
                $files = $zip->extractTo($filepath);
                //关闭
                $zip->close();
                //移动文件
                $path = _FILE_PATH . "/face/" . date("Y") . "/" . date("m") . "/" . date("d") . "/" . $name;
                $arr = scandir($path);
                foreach ($arr as $val) {
                    if (strlen($val) > 2) {
                        $oldfile = $filepath . "/" . $name . "/" . $val;
                        $newfile = $filepath . "/" . $val;
                        copy($oldfile, $newfile);
                    }
                }
                //删除多余文件
                $this->dir($filepath . "/" . $name);
                @rmdir($filepath . "/" . $name);
                $this->dir($filepath."/__MACOSX");
                @rmdir($filepath."/__MACOSX");
                unlink($filepath . "/" . $name . ".zip"); //删除文件
                die(json_encode(array("status" => "success", "message" => "上传成功")));
            } else {
                die(json_encode(array("status" => "false", "message" => "上传失败")));
            }
        }
    }
    
    /**
     * Notes: 递归删除目录中的文件及文件夹
     * Created by jessie@seabig.cn
     * DateTime: 2020-01-06 20:16
     */
    public function dir($path)
    {
        //扫描一个目录内的所有目录和文件并返回数组
        $dirs = scandir($path);
        foreach ($dirs as $dir) {
            //排除目录中的当前目录(.)和上一级目录(..)
            if ($dir != '.' && $dir != '..') {
                //如果是目录则递归子目录,继续操作
                $sonDir = $path . '/' . $dir;
                if (is_dir($sonDir)) {
                    //递归删除
                    $this->dir($sonDir);
                    //目录内的子目录和文件删除后删除空目录
                    @rmdir($sonDir);
                } else {
                    //如果是文件直接删除
                    @unlink($sonDir);
                }
            }
        }
    }

  • 相关阅读:
    .NET的委托和匿名函数应用一例
    C#中,变量前的@符号
    ExtJs中多个form情况下指定某个form使能
    【Python web 开发】个人中心-用户收藏功能
    【Python web 开发】用户个人信息修改
    【Python web 开发】django rest framwork 动态设置serializers
    【Python web 开发】django rest framwork动态设置权限premission
    【fiddler】用fiddler 拦截请求修改response 回包测试
    【Python web 开发】联合唯一索引
    【Python web 开发】用户收藏功能
  • 原文地址:https://www.cnblogs.com/xiangangXu1997/p/12468935.html
Copyright © 2020-2023  润新知