경로의 (서브포함)파일과 폴더를 XML로 표현하는 함수

<?
header('Content-type: text/xml; charset=UTF-8');

$gmt = gmdate('D, d M Y H:i:s', time()+3600).' GMT'; header("Expires: ".$gmt); // Date in the past

require_once('_inc.cfg.php'); //설정파일

function getStat($path){
 $arr = stat($path);
 unset($arr[0]);
 unset($arr[1]);
 unset($arr[2]);
 unset($arr[3]);
 unset($arr[4]);
 unset($arr[5]);
 unset($arr[6]);
 unset($arr[7]);
 unset($arr[8]);
 unset($arr[9]);
 unset($arr[10]);
 unset($arr[11]);
 unset($arr[12]);
 $arr['path']=iconv('euc-kr','utf-8',$path);
 $arr['enc_path']=rawurlencode($path);
 $arr2 = pathinfo($path);
 $arr['dirname'] = iconv('euc-kr','utf-8',$arr2['dirname']);
 $arr['enc_dirname'] = rawurlencode($arr2['dirname']);
 $arr['basename'] = iconv('euc-kr','utf-8',$arr2['basename']);
 $arr['enc_basename'] = rawurlencode($arr2['basename']);
 $arr['extension'] = strtolower($arr2['extension']);
 $arr['label'] = $arr['basename'];
 return $arr;
}
function pathToXML($path,$exp_allow=null){
 if ($handle = opendir($path)) {
  while (false !== ($file = readdir($handle))) {
   if ($file != "." && $file != "..") {
    $filePath = $path.'/'.$file;
    if(is_dir($filePath)){
     $info = getStat($filePath);
     print("\n<dir ");
     foreach($info as $key=>$val){
      print($key.'="'.htmlspecialchars($val,ENT_QUOTES).'" ');
     }
     print('type="dir" ');
     print('>');
     pathToXML($filePath,$exp_allow);
     print("</dir>");
    }else if(is_file($filePath)){
     $info = getStat($filePath);
     if($exp_allow!=null && !in_array($info['extension'],$exp_allow)){
      continue;
     }
     print("\n<file ");
     foreach($info as $key=>$val){
      print($key.'="'.htmlspecialchars($val,ENT_QUOTES).'" ');
     }
     print('type="file" ');
     print(' />');
    }
   }
  }
  @closedir($handle);
 }
}
//=====
print('<?xml version="1.0" encoding="UTF-8"?>'."\n");
print('<files>');
//pathToXML($path['clip'],$exp['allow']); //$path['clip'] : 경로 ,  $exp['allow']:허용할 확장자 배열
pathToXML($path['clip']); //모든 확장자
print("\n".'</files>');
?>

 


그냥 FLASH의 콤퍼넌트와 연결할려고 만들어 본겁니다.
간단한 재귀형식으로 폴더와 파일을 가져와서 XML형식으로 바로 출력합니다.
기본적으로 EUC-KR의 서버안에서 UTF-8로 파일이름과 경로를 바꿔서 사용합니다.
앞에 enc_ 가 붙은건 urlencode 한것으로 이것을 사용해서 URL에 사용하시면 됩니다.
안붙은 것으로 할경우 언어셋 차이로 문제가 생깁니다.


결과예제

댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
제목 작성자 날짜
공대여자
공대여자
mins01
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자