728x90

PHP 폴더내 파일 개수를 구하는 함수를 만들어보자.


검색해보니

function dirs_chk($dir){
 $dirs=count(scandir($dir)); 
 echo $dirs;
}
$dir = 'uploads/';
echo dirs_chk($dir);

로 하면 파일 개수를 구할 수 있다고 해서 테스트를 해보니 이건 sub 폴더까지 검색하는데 문제는 . 과 .. 까지 카운트를 한다. 그래서 원하는 개수를 정확하게 구할 수가 없다.


http://www.webmadang.net/develop/develop.do?action=read&boardid=1003&page=1&seq=65

에 있는 걸로 테스트를 했더니 제대로 나오는데 경고 메시지가 출력된다.


원하는 사항은 특정 폴더내에서 특정 확장자를 가진 파일의 개수를 반환하고자 한다.

그래서 경고메시지 나오는 부분을 수정했고 특정 확장자만 검사하도록 코드를 추가했다.


<?php
$doc_root = $_SERVER["DOCUMENT_ROOT"]; // Web서버 root directory
$dir=$doc_root.'/fileupload/uploads/';
$dir_count = 0;
$file_count = 0;
$valid_formats = array("jpg", "png", "gif");

// 디렉토리에 있는 파일과 디렉토리의 갯수 구하기
$result = opendir($dir); //opendir 함수를 이용해서 디렉토리의 핸들을 얻어옴
// readdir함수로 지정 디렉토리에 있는 디렉토리와 파일들의 이름을 배열로 읽어들임
while($file = readdir($result)) {
    if($file === "."|| $file === "..") continue; // file명이 ".", ".." 이면 무시함
    $getExt = pathinfo($file, PATHINFO_EXTENSION); // 파일의 확장자를 구함

    if(empty($getExt)){
        $dir_count++; // 파일에 확장자가 없으면 디렉토리로 판단하여 dir_count를 증가시킴
    } else {
        if(in_array($getExt, $valid_formats)){
            $file_count++; // 검사조건에 맞는 파일이 있으면 카운트
        }
    }
}

echo"디렉토리 갯수 : ".$dir_count."<br>";
echo"파일의 갯수 : ".$file_count;
?>


이제 다른 곳에서 사용하기 위해서 함수화를 해보자.


// 지정 디렉토리내의 지정 파일 개수 구하기

function getFilesCount_CurDir($dir){
    $dir_count = 0;
    $file_count = 0;
    $valid_formats = array("jpg", "png", "gif"); // 그림 확장자 지정
   
    // 디렉토리에 있는 파일과 디렉토리의 갯수 구하기
    $result = opendir($dir); //opendir 함수를 이용해서 디렉토리의 핸들을 얻어옴
    // readdir함수를 이용해서 디렉토리에 있는 디렉토리와 파일들의 이름을 배열로 읽어들임
    while($file = readdir($result)) {
        if($file === "."|| $file === "..") continue; // file명이 ".", ".." 이면 무시함
        $getExt = pathinfo($file, PATHINFO_EXTENSION); // 파일의 확장자를 구함

        if(!empty($getExt)){
            if(in_array($getExt, $valid_formats)){
                $file_count++; // 검사조건에 맞는 파일이 있으면 카운트
            }
        }
    }
    return $file_count;
}


블로그 이미지

Link2Me

,