s

PHP에서 2GB이상의 파일크기 정확히 얻기

· 2020-11-20 (금) 09:34:36 · 5507 · 5

PHP가 제공해주는 filesize()함수는 일부 OS(부호화된 32비트 정수형체계를 이용하는 플랫폼들)에서는 2GB이상 되는 파일의 크기를 정확히 출력해주지 못합니다.
왜냐문 당연히 부호화된 32비트체계에서는 PHP가 다룰수 있는 정수값의 범위가 -2 147 483 647 부터 2 147 483 647 까지로, 2GB이상을 담을수 없기때문입니다.
여러가지 플랫폼에 무관하게 대용량 파일의 크기를 빠르고 쉽게 얻을수 있는 함수를 공개합니다.

    function getFileSize($file) {
        if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
            $size = trim(exec("for %F in (\"" . $file . "\") do @echo %~zF"));
        }
        elseif ((PHP_OS == 'Linux') || (PHP_OS == 'FreeBSD') || (PHP_OS == 'Unix') || (PHP_OS == 'SunOS')) {
            $size = trim(shell_exec("stat -c%s " . escapeshellarg($file)));
        } else {
            $size = filesize($file);
        }
        return $size;
    }

로직은 간단하죠.
콘솔지령으로 파일의 크기를 제한 없이 추출했습니다.

그누보드에서는 게시판의 파일을 다운로드하는데 filesize()함수를 이용하던데, 물론 용량제한으로 2GB이상의 파일을 취급 안 하지만, 확장성을 고려하여 filesize()함수 대신 getFileSize()함수를 이용하는게 더 나은 선택이 아닐가 문의드립니다.
대용량의 파일을 다운로드하고여 사용할때는 퍽 유익하더라구요...

감사합니다.

|

댓글 5개

좋은 정보 고맙습니다.
2020-11-20 (금) 21:22:24
32bit 운영체제 지원은 기억에서 지우고 있었는데 필요하신분이 계실지도 모르겠네요 ㅎㅎ
file_exists(), function_exists()로 예외처리도 하면 좋을것 같습니다.
쑤꾸웹~~~
캄사합니다~~
감사합니다.
감사합니다
댓글을 작성하시려면 로그인이 필요합니다.

그누보드5 팁자료실

2,788건
+
제목 글쓴이 날짜 조회
20-12-10 조회 7,421
20-12-08 조회 5,876
20-12-08 조회 8,525
20-12-05 조회 8,009
20-12-03 조회 7,124
20-12-03 조회 5,461
20-11-24 조회 6,317
20-11-24 조회 7,668
20-11-23 조회 6,065
20-11-22 조회 7,245
20-11-20 조회 5,508
20-11-19 조회 6,522
20-11-19 조회 5,401
20-11-19 조회 5,554
20-11-19 조회 5,954
20-11-14 조회 7,571
20-11-11 조회 7,465
20-11-09 조회 6,516
20-11-06 조회 7,936
20-11-05 조회 7,061
20-11-01 조회 7,000
20-10-30 조회 1.1만
20-10-28 조회 6,386
20-10-28 조회 7,048
20-10-27 조회 1.5만
20-10-27 조회 5,730
20-10-21 조회 5,950
20-10-20 조회 6,262
20-10-20 조회 6,417
20-10-14 조회 8,808