获取文件夹下的文件

获取指定文件夹下的文件(根据日期段和设备号)。
目录结构
在这里插入图片描述

public function getCameraPicListByNum(){

        $dvcNum = input('param.dvcNum');
        $date = input('param.date');
        $starttime = substr($date,0,10);
        $endtime = substr($date,-10,10);
        $dateArr = $this->getDurationDate($starttime,$endtime);

        $files = array();
        $path = ROOT_PATH . 'public' . DS . 'videos';
        if($dateArr){
            foreach ($dateArr as $key => $item){
                $files[$item] = $this->getFilterFiles($path,$item,$dvcNum);
            }
            return json(['code'=>10000,'data'=>$files]);
        }else{
            return json(['code'=>10011,'responseMsg'=>'Got wrong Param , Please Check Your param']);
        }

    }

    /**
     * @param $path string 图片路径
     * @param $date string 日期 2018-10-10
     * @param $dvcNum string 设备号
     * @param int $level
     * @return array
     */
    private function getFilterFiles($path,$date,$dvcNum,$level = 1){
        $param1 = substr($date,0,4);
        $param2 = substr($date,5,2);
        $param3 = substr($date,8,2);
        $this->files = [];
        if(is_dir($path) && $handle = opendir($path)){
            while($file = readdir($handle)){
                if($file == '.' || $file == '..') continue;

                $real_path = $path . DS . $file;
                if($level == 1 && strpos($file,$param1) !== false){
                    $this->getFilterFiles($real_path,$date,$dvcNum,$level+1);
                }
                if($level == 2 && strpos($file,$param2) !== false){
                    $this->getFilterFiles($real_path,$date,$dvcNum,$level+1);
                }
                if($level == 3 && strpos($file,$param3) !== false){
                    $this->getFilterFiles($real_path,$date,$dvcNum,$level+1);
                }
                if($level == 4 && strpos($file,$dvcNum) !== false){
                    $this->getFilterFiles($real_path,$date,$dvcNum,$level+1);
                }
                if($level == 5 && is_file($real_path)){
                    $this->files[] = $param1 . DS . $param2 . DS . $param3 . DS . $dvcNum . DS . $file;
                    //dump($files);
                }
            }
        }
        return $this->files;
    }
    /**
     * @param $start string format date '2018-10-09'
     * @param $end string format date '2018-10-11'
     * @return array
     */
    private function getDurationDate($start,$end){
        $date = [];
        $dt_start = strtotime($start);
        $dt_end = strtotime($end);
        while($dt_start<=$dt_end){
            $date[] = date('Y-m-d',$dt_start);
            $dt_start = strtotime('+1 day',$dt_start);
        }
        return $date;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值