PHP FAQ

Jak sprawdzić rozmiar pliku w MB

Coldpeer

Jak sprawdzić rozmiar pliku w megabajtach (MB)? Bardzo prosto, oto kod:

<?php
 
$plik = 'jakisplik.zip';
echo 'Plik <b>'.$plik.'</b> ma rozmiar <b>'.filesize($plik).'</b> B, czyli <b>'.
     round( filesize($plik) / 1024 / 1024, 2).'</b> MB';
 
?>

Funkcja filesize() zwraca rozmiar pliku w bajtach (B). Aby zaokrąglić odpowiednio rozmiar pliku, należy użyć funkcji round(). Zmienna $plik przechowuje oczywiście nazwę pliku, którego rozmiar chcemy sprawdzić.

Należy pamiętać, że wszelkie funkcje zwracające status plików są przechowywane w cache od pierwszego wywołania. Dlatego, jeśli chcemy pobrać rozmiar po raz drugi, a istnieje prawdopodobieństwo, że plik uległ zmianie, należy wcześniej wyczyścić cache funkcją clearstatcache().
FAQ

6 komentarzy

function size_comp($size, $retstring = null) {
        $sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
        if ($retstring === null) { $retstring = '%01.2f %s'; }
        $lastsizestring = end($sizes);
        foreach ($sizes as $sizestring) {
                if ($size < 1024) { break; }
                if ($sizestring != $lastsizestring) { $size /= 1024; }
        }
        if ($sizestring == $sizes[0]) { $retstring = '%01d %s'; } 
        return sprintf($retstring, $size, $sizestring);
}
echo size_comp(filesize($plik));

od siebie :p

A ja bym proponowal kod ponizej z manuala php:
http://pl2.php.net/manual/pl/function.filesize.php#64387
Sam wybiera jaka jednostke uzyc.

Oczywiście, że w bajtach, pomyłka...

Zdanie "Należy pamiętać, że wszelkie funkcje zwracające status plików są przechowywane w cache od pierwszego wywołania." jest nieco błędne składniowo, bo wynika z niego, że to funkcje siedzą w cache a nie dane - ale nie miałem pomysłu jak to sformuować - może ktoś mnie poprawi.

Skoro rzekomo filesize zwraca rozmiar z kb to czemu dwa razy dzielisz przez 1024?