PHP 언어에서 파일의 크기를 알아내려면 어떻게 해야할까요? 간단한 방법으로 php에서 제공하는 filesize() 함수를 이용하는 방법이 있습니다. 이 함수는 해당하는 파일의 크기를 반환합니다. 사용방법은 매우 간단하여 아래와 같은 형식으로 사용할 수 있습니다. 전달 할 인자에는 해당하는 파일이름을 넣어줍니다.

filesize(해당하는 파일이름)
// 파일이름 필수사항



함수를 실행시킬 경우 해당하는 파일의 사이즈를 확인하여 반환합니다. 참고로 이때 반환하는 값의 기본 단위는 byte입니다. 그렇기때문에 만약 Kbyte 단위의 값이 필요하다면 간단하게 1024를 나누면 원하는 값을 구할 수 있을 것입니다. 그럼 아래의 예제와 함께 알아보시기 바랍니다.


# filesize() 함수 예제소스 보기 아래는 특정 이미지 파일의 크기를 알아내어 kbyte로 표기하는 방법에 대한 간단한 예제소스입니다. 실제로 현재 서버에 저장되 있는 이미지의 크기를 예로 사용하였습니다. 그럼 아래 코드를 확인하세요.
<?php
   $imageSize = filesize(./images/galleryImg_01.jpg) / 1024;
   //  파일의 크기를 알아낸 후 1024로 나누어 kbyte 단위로 계산

   $imageSize = floor($imageSize);
   // 소수점 제거를 위해 floor를 사용

   echo $imageSize.' KB';
?>

실행한 결과 아래와 같이 나타났습니다.
542 KB

// 계산된 결과로 542 KB를 출력함

위 예제소스를 사용하여 우리가 원하는 파일단위의 값을 구하였습니다. 만약 단순하게 byte가 아니라 더 많은 단위를 간략하게 표기위한 방법은 없을까요? 아래와 같이 단위로 구분하여 출력하는 함수를 만들어 사용하면 매우 편리할 것입니다. 아래의 소스코드를 참고하세요.


# 사이즈를 구분 가능한 단위로 바꾸어 출력하는 함수 소스 보기위와 같이 사이즈 값을 불러온 경우 이를 표현하기 위해 각각의 단위별로 바꾸는 작업이 필요하죠. 아래는 각각의 단위로 바꾸어 출력하는 방법입니다.
<?php
  function formatSize($bytes, $decimals = 2) {
    $size = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
    $factor = floor((strlen($bytes) - 1) / 3);
    return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$size[$factor];
  }
?>

위의 사용자 함수 formatSize()는 앞의 인자에는 확인할 파일을... 뒤에는 나타낼 소수점을 사용할 수 있습니다. 만약 512,000 byte의 파일을 위 함수를 사용해 확인하면 다음과 같이 결과가 나타나게됩니다.
<?php
   $test = 512000;
   echo formatSize($test);
?>

512.00KB
// 출력결과로 512.00KB를 반환하였음

매우 편리하게 원하는 단위의 값을 읽기 쉽도록 변환해주는 함수입니다.