Cette fonction est un portage en PHP de la fonction javascript pour convertir des octets.
La fonction attend 3 paramètres :
- Le chemin d'accès.
- Un boolean pour indiquer si elle doit renvoyer des nom court (ko) ou long (Kilo octets).
- Un boolean pour indiquer si elle doit vérifier l'existence du fichier (vous avez pu le faire avant, inutile de répéter l'opération).
function FileGetSize($aPath='', $aShort=true, $aCheckIfFileExist=true){
if($aCheckIfFileExist && !file_exists($aPath)) return 0;
$size = filesize($aPath);
if(empty($size)) return '0 '.($aShort ? 'o':'octets');
$l = array();
$l[] = array('name'=>'octets', 'abbr'=>'o', 'size'=>1);
$l[] = array('name'=>'kilo octets', 'abbr'=>'ko', 'size'=>1024);
$l[] = array('name'=>'mega octets', 'abbr'=>'Mo', 'size'=>1048576);
$l[] = array('name'=>'giga octets', 'abbr'=>'Go', 'size'=>1073741824);
$l[] = array('name'=>'tera octets', 'abbr'=>'To', 'size'=>1099511627776);
$l[] = array('name'=>'peta octets', 'abbr'=>'Po', 'size'=>1125899906842620);
foreach($l as $k=>$v){
if($size<$v['size']){
return round($size/$l[$k-1]['size'], 2).' '.($aShort ? $l[$k-1]['abbr']:$l[$k-1]['name']);
}
}
$l = end($l);
return round($size/$l['size'], 2).' '.($aShort ? $l['abbr']:$l['name']);
}
Vous pouvez la simplifier pour qu'elle ne fasse que la conversion en supprimant les deux premières lignes et le dernier argument.
Si le fichier fait 0 octets la fonction renvoi "0 o" ou "0 octets"
Si le fichier est plus grand que 1024 fois la plus grande unité, elle renvoi la dernière unité de la liste.
Fonctionne sous PHP 4, PHP 5 et PHP 7.