Jak sprawdzić rozmiar pliku w megabajtach oraz bajtach?

Coldpeer

Jak sprawdzić rozmiar pliku w megabajtach (MB)?

<?php
function filesizeMb($filename) {
  return round( filesize($plik) / 1024 / 1024, 2);
}

$plik = 'jakisplik.zip';
echo 'Plik <b>' . htmlentities($plik) . '</b> ma rozmiar <b>' . filesize($plik) . '</b> B, czyli <b>'. filesizeMb($plik) . '</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ć.

Uwaga!

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().

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?