'scandir'에 해당되는 글 2건

  1. 2014.11.13 특정 경로의 파일 정보 가져오기
  2. 2014.11.13 특정 경로의 폴더 리스트 가져오기
2014. 11. 13. 12:02

이번 작업은 조금전 올린 특정 경로의 폴더 리스트 가져오기

 

지난번에 올린 파일의 확장자 분리를 혼합한 것과 같다.

 

단지  몇가지 정보만 더 뽑아냈을뿐....

 

그리고 이번 소스도 역시 json 방식으로 반환한다.

 

function getFiles($path){
  $arrData = array();
  $results = scandir($path);
  
  foreach ($results as $result) {  
   if ($result === '.' or $result === '..') continue;  
   if (!is_dir($path . '/' . $result)) { //디렉토리가 아니면
    $data = array();
    
    $path_parts = pathinfo($path . '/' . $result);
    
    $data["dirname"] = iconv("euc-kr","utf-8",$path_parts['dirname']); //파일경로 단, 파일이름은 포함하지 않음, 한글깨짐 방지
    $data["basename"] = iconv("euc-kr","utf-8",$path_parts['basename']); //파일이름
    $data["extension"] = iconv("euc-kr","utf-8",$path_parts['extension']); //확장자.
    $data["mtime"] =  date("Y-m-d H:i:s.", filemtime($path . '/' . $result)); //파일 수정일
    $data["ctime"] =  date("Y-m-d H:i:s.", filectime($path . '/' . $result)); //파일 생성일
    $data["filesize"] =  filesize($path . '/' . $result); //파일 크기, byte단위
    $data["filename"] = iconv("euc-kr","utf-8",$path_parts['filename']); // since PHP 5.2.0
    
    $arrData[] = $data;
   }
  }
  return $arrData;
 }

 

참고로 pathinfo 함수에서 filename은 PHP 5.2.0이상부터 지원한다.

Posted by 작은0악마
2014. 11. 13. 11:23

어떤 폴더내의 폴더 목록을 가져올 필요가 생겼다.

 

그 폴더 목록을 가져와서 Tree형대로 표시할려고 한다.

 

그래서 다음과 같은 함수를 만들어 처리했다.

 

function getDir($path){
  
  $arrData = array();
  $results = scandir($path);
  
  foreach ($results as $result) {  
   if ($result === '.' or $result === '..') continue;  
   if (is_dir($path . '/' . $result)) { //디렉토리라면
    $data = array();
    $data["text"] = iconv("euc-kr","utf-8",$result); //한글일경우 json 에러때문에
    $data["id"] = iconv("euc-kr","utf-8", $path . '/' . $result);
    $data["cls"] = "folder";
    $sub_folders = getDir($path . '/' . $result); //폴더이므로 그 안에 폴더 목록을 가져오기 위해..
    if(count($sub_folders)){
     $data["leaf"] = false;
     $data["root"] = $sub_folders;
    }else{
     $data["leaf"] = true;
    }
    $arrData[] = $data;
   }
  }
  return $arrData;
 }


 

참고로 위 소스는 가져온 값을 json의 형태로 보낸다.

 

또한 해당 폴더의 서브폴더 목록을 가져오기 위해 재귀 호출을 하였다.

Posted by 작은0악마