Wenn du mit dem PHP-Code „filesize“ die Dateigröße ermittelst, dann bekommst du die Dateigröße in „Bytes“ zurück. Joa, damit kann im „Normalfall“ keiner was anfangen 🙂 Mit diesem PHP-Snippet kannst du die Dateigröße automatisch in KB, MB, GB usw. umwandeln!
Dateigröße ermitteln
$dateigroesse = filesize('datei.txt');
Im Beispiel steht dann in der Variable „dateigroesse“ die Dateigröße der Datei „datei.txt“ in Bytes.
Helfer-Funktion
function formatFilesizeUnits($bytes) {
if ($bytes >= 1073741824) {
$bytes = number_format($bytes / 1073741824, 2) . ' GB';
} elseif ($bytes >= 1048576) {
$bytes = number_format($bytes / 1048576, 2) . ' MB';
} elseif ($bytes >= 1024) {
$bytes = number_format($bytes / 1024, 2) . ' KB';
} elseif ($bytes > 1) {
$bytes = $bytes . ' bytes';
} elseif ($bytes == 1) {
$bytes = $bytes . ' byte';
} else {
$bytes = '0 bytes';
}
return $bytes;
}
Füge einfach das Snippet an einer beliebigen Stelle in deinem Code ein!
Umwandlung von Bytes in „human readable“
Wenn du alle Teile in deinem Code hast, dann kannst du die Funktionen kombinieren:
echo formatFilesizeUnits(filesize('datei.txt'));
Alles kombiniert
<?php
function formatFilesizeUnits($bytes) {
if ($bytes >= 1073741824) {
$bytes = number_format($bytes / 1073741824, 2) . ' GB';
} elseif ($bytes >= 1048576) {
$bytes = number_format($bytes / 1048576, 2) . ' MB';
} elseif ($bytes >= 1024) {
$bytes = number_format($bytes / 1024, 2) . ' KB';
} elseif ($bytes > 1) {
$bytes = $bytes . ' bytes';
} elseif ($bytes == 1) {
$bytes = $bytes . ' byte';
} else {
$bytes = '0 bytes';
}
return $bytes;
}
echo formatFilesizeUnits(filesize('datei.txt'));
?>
Funktion v2
Ich habe gerade noch die Funktion so erweitert, dass du einfach nur den Dateiname übergeben musst – oder die Dateigröße – die Funktion checkt den Rest!
function formatFilesizeUnits($SizeOrFile) {
if (!is_numeric($SizeOrFile)) {
$SizeOrFile = filesize($SizeOrFile);
}
if ($SizeOrFile >= 1073741824) {
$SizeOrFile = number_format($SizeOrFile / 1073741824, 2) . ' GB';
} elseif ($SizeOrFile >= 1048576) {
$SizeOrFile = number_format($SizeOrFile / 1048576, 2) . ' MB';
} elseif ($SizeOrFile >= 1024) {
$SizeOrFile = number_format($SizeOrFile / 1024, 2) . ' KB';
} elseif ($SizeOrFile > 1) {
$SizeOrFile = $SizeOrFile . ' bytes';
} elseif ($SizeOrFile == 1) {
$SizeOrFile = $SizeOrFile . ' byte';
} else {
$SizeOrFile = '0 bytes';
}
return $SizeOrFile;
}
Du rufst die „Version 2“ wie folgt auf:
echo formatFilesizeUnits(filesize('datei.txt'));
// oder:
echo formatFilesizeUnits('datei.txt');
Ich hoffe, dass dir die Funktion hilft! Wäre cool, wenn du mir ein kurzes Feedback in die Kommentare schreibst 😉
Web-Designer/-Entwickler und WordPress-, sowie PHP-Profi
Kreativität und Technologie – meine zwei Leidenschaften. Ich arbeite als selbstständiger Designer und Entwickler. Gerne kombiniere ich beide Leidenschaften und entwickle Tools zur Marketing-Automation und erstelle Visual Effects für Video-Marketing. Hier auf der Sammelmappen-Seite schreibe ich Anleitungen und Tutorials für Programmierung und für WordPress; das ist bisschen wie mein Steckenpferd. Alles weitere findest du auf meiner Webseite – gerne auch geschäftliche Anfragen!