Programowanie w języku PHP » FAQ

Jak sprawdzić rozmiar pliku w MB

  • 2006-04-26 20:38
  • 6 komentarzy
  • 2070 odsłon
  • Oceń ten tekst jako pierwszy
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().

6 komentarzy

bordeux 2007-12-25 21:19

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

pc3t.awars.pl 2007-04-14 17:15

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

Coldpeer 2006-04-27 14:28

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

Marooned 2006-04-26 20:40

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.

Wolverine 2006-04-26 20:24

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