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;
}
'Web 프로그램 > 파일 다루기' 카테고리의 다른 글
PHP 파일리스트 배열로 출력하기 (0) | 2018.06.20 |
---|---|
[PHP] DB 자료를 csv로 저장하기 (0) | 2018.02.27 |
[jQuery] PHP 파일 업로드 - 2 (ajax progress bar 구현) (1) | 2016.12.19 |
[jQuery] PHP 파일 업로드 - 1 (0) | 2016.12.18 |
PHP 파일 업로드 코딩 고려사항 (0) | 2016.07.24 |