Kategorien
PHP

PHP Dateigröße lesbar darstellen

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 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.