Gå til innhold

Regne ut filstørrelse


Anbefalte innlegg

Videoannonse
Annonse

Du har visst fått til en dobbeltpost (eller dobbelttråd), men det visste du sikkert uansett :)

###Notis fra moderator: dobbeltråden er nå slettet og dette innlegget ble flyttet over### - TSP

 

Dette burde gjøre det du ber om ;)

 

<?php
// the $file without the path, put the path in the $path-variable (based on the doc. root)
function file_size($file, $path = "") {
global $DOCUMENT_ROOT;
$bytes = array("B", "KB", "MB", "GB", "TB", "PB");
$file_with_path = $DOCUMENT_ROOT."/".$path."/".$file;
// replace (possible) double slashes with a single one
$file_with_path = str_replace("//", "/", $file_with_path);
$size = filesize($file_with_path);
$i = 0;
while ($size >= 1024) { //divide the filesize (in bytes) with 1024 to get "bigger" bytes
	$size = $size/1024;
	$i++;
}
if ($i > 1) {
	// you can change this number if you like (for more precision)
	return round($size,1)." ".$bytes[$i];
} else {
	return round($size,0)." ".$bytes[$i];
}
}
// example for using
echo file_size("example.txt", "myFolder");
?>

Endret av TSP
Lenke til kommentar

Som regel regner man ut fra byte (filesize)

 

function formatDecimal($bytes)
{
if(is_int($bytes) === true && $bytes > 0)
{
	$s = array('byte', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');

	$e = floor(log($bytes, 1000));

	return round($bytes / pow(1000, $e), 2).' '.$s[$e];
}

return '0 byte';
}

function formatBinary($bytes)
{
if(is_int($bytes) === true && $bytes > 0)
{
	$s = array('byte', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB');

	$e = floor(log($bytes, 1024));

	return round($bytes / pow(1024, $e), 2).' '.$s[$e];
}

return '0 byte';
}

Endret av shaker
Lenke til kommentar

1024 bytes er ikke 1 kB, 1000 bytes er 1 kB. ;) Hvorfor tror alle det? :S k står for kilo, som er latin for tusen. Da sier det seg selv at--som i alt annet, kilogram, kilometer, etc--at 1 kilobyte = tusen bytes = 1000 bytes.

 

1024 bytes = 2^10 bytes = 1 kiB = 1 kibibyte = 1 kilo binary byte.

 

Det er en standard, følg den. :D

Endret av LostOblivion
Lenke til kommentar
1024 bytes er ikke 1 KB, 1000 bytes er 1 KB. ;) Hvorfor tror alle det? :S K står for kilo, som er latin for tusen. Da sier det seg selv at--som i alt annet, kilogram, kilometer, etc--at 1 kilobyte = tusen bytes = 1000 bytes.

 

1024 bytes = 2^10 bytes = 1 KiB = 1 kibibyte = 1 kilo binary byte.

 

Det er en standard, følg den. :D

Bortsett fra at K står for Kelvin og at du egentlig mener at k står for kilo, så er jeg helt enig.

Lenke til kommentar

Takker, det var en test for å sjekke om dere la merke til det. *Kremt* *Post redigert*

 

Ikke at 2^10/10^3 spiller noen rolle i dag da, kilo i byte-verdenen betyr som regel 1024. Jeg skjønner dog ikke helt hvorfor? Fordi folk kan gå rundt og leve opp til et forsøkt "jeg-kan-data-jeg"-idol? Prøver ikke å være arrogant her, jeg bare lurer. :)

Lenke til kommentar
Ikke at 2^10/10^3 spiller noen rolle i dag da, kilo i byte-verdenen betyr som regel 1024.

Det er akkurat det det ikke gjør.

 

I 100% av resten av verden de siste hundre og noe år har kilo vært internationalt standardisert som 1000. Men innen IT har noen deler brukt 1000 og andre nesten-tusen fordi det var raskere å regne på. Alt av båndbredder har f.eks alltid brukt SI-enhetene korrekt med ti som grunntall, mens f.eks RAM har benyttet seg av to som grunntall. For lagring bruker produsentene ti som grunntall mens Microsoft Windows bruker to. Det er altså ingen klar bruk av hverken det ene eller det andre, det er for det meste Windows mot alt annet samt resten av verden.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...