获取文件夹下的文件
获取指定文件夹下的文件(根据日期段和设备号)。
目录结构
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;
}