zoukankan      html  css  js  c++  java
  • 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);
                }
            }
        }
    }

  • 相关阅读:
    坐标系操作
    创建重复字符的字符串
    添加和读取扩展数据
    GDI+ 透明画刷
    AutoCAD将焦点设置为绘图窗口
    DataGridView复制到Excel格式
    VB.NET 如何使用AutoCAD事件
    DataGridView禁用行标题中的三角号
    day80-drf-web开发模式、api接口、postman的使用、Restful规范(重点)、drf的安装和简单使用 、cbv源码、APIView源码分析
    day81-drf-序列化组件、简单使用、字段类型、字段选项、修改数据、read_only、write_only、查询所有、新增、删除、模型类序列化、源码分析
  • 原文地址:https://www.cnblogs.com/xiangangXu1997/p/12468935.html
Copyright © 2011-2022 走看看