Jun 02
Mit PHP Dateigröße beliebiger Dateien auslesen
Oft möchte man Dateien zum Download anbieten und daneben noch die Dateigröße der Datei anzeigen. Diese Dateigrößen per Hand einzutragen ist eine Menge an Arbeit welche man sich auch sparen kann. Mit PHP ist es sehr einfach möglich die Größen von Dateien zu ermitteln und auszugeben.
Mit der Funktion filesize() kann man die größe einer Datei auslesen. Filzesize() gibt die Größe einer Datei in Bytes zurück, man muss (oder sollte zumindest) diese immer in die entsprechende Einheit umwandeln (kb, mb, gb). Wir schreiben uns also eine kleine Funktion welche das alles für uns übernimmt.
<?php function fs_convert ($datei, $nachkommastellen = 0) { if(!file_exists($datei)) { // Wenn Datei nicht existiert echo "0 Byte"; return; // Ende der Funktion } $size = filesize($datei); // Größe in Bytes if($size >= 1073741824) // Wenn über 1 GB echo round($size/(1073741824), $nachkommastellen)." GB"; elseif($size >= 1048576) // Wenn über 1 MB echo round($size/(1048576), $nachkommastellen)." MB"; elseif($size >= 1024) // Wenn über 1 KB echo round($size/(1024), $nachkommastellen)." KB"; else // Ansonsten sind es nur Bytes echo $size." Byte"; } ?>
Diese Funktion können wir nun einfach aufrufen und die Dateigröße wird mittels PHP mit der entsprechenden Einheit ausgelesen bzw. zurückgeliefert. Ein kleines Beispiel wie das Ganze aussehen könnte.
<?php function fs_convert ($datei, $nachkommastellen = 0) { if(!file_exists($datei)) { // Wenn Datei nicht existiert echo "0 Byte"; return; // Ende der Funktion } $size = filesize($datei); // Größe in Bytes if($size >= 1073741824) // Wenn über 1 GB echo round($size/(1073741824), $nachkommastellen)." GB"; elseif($size >= 1048576) // Wenn über 1 MB echo round($size/(1048576), $nachkommastellen)." MB"; elseif($size >= 1024) // Wenn über 1 KB echo round($size/(1024), $nachkommastellen)." KB"; else // Ansonsten sind es nur Bytes echo $size." Byte"; } ?> Die Datei: <a href="email.zip">email.php</a> ist <?php fs_convert("email.zip", 2); ?> groß. <br> <br> Die Datei: <a href="test/datei_2.zip">Datei 2</a> ist <?php fs_convert("test/datei_2.zip", 2); ?> groß.
In diesem Beispiel müsste die Datei email.zip im selben Verzeichniss liegen, in dem diese Funktion aufgerufen wird. Die Datei datei_2.zip müssten in einem Unterordner namens "test" liegen.
Nun wünsche ich viel Spaß beim dynamischen ermitteln von Dateigrößen mittels PHP.

Juni 14th, 2008 at 1:08 pm
Echt gut danke.