Jun 02

Mit PHP Dateigröße beliebiger Dateien auslesen

Tag: PHP Tipps und TricksLeichti @ 4:27 pm

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.



Tags: , , , , ,

Ein Kommentar zu “Mit PHP Dateigröße beliebiger Dateien auslesen”

  1. fishi says:

    Echt gut danke.

Dein Kommentar