Bonsoir,
Je cherche à afficher la juste mesure vous savez c'est deux petite lettre (o, ko, mo, go) à côté de la taille d'un fichier en fonction de la taille de l'image qui se trouve dans un répertoire. Voilà ou j'en suis:
$size = filesize("upload-img/".$file);
if($size < 1000){
$size = $size/1;
$size = $size."o";
}
elseif($size < 1000000){
$size = $size/1000;
$size = $size."Ko";
}
elseif($size < 1000000000){
$size = $size/1000000;
$size = $size."Mo";
}
elseif($size < 1000000000000){
$size = $size/1000000000;
$size = $size."Go";
}
Les lettres son bonne maintenant il reste à afficher la taille exacte et là je n'y arrive pas peut-être la fatigue ^^. Par exemple pour une des images j'ai 88.2ko mais mon script me donne 90.383Ko ??? or moi je veux afficher: 88.2ko
<?php
class Temp{
public function __construct(){
}
public function testFormatSize(){
$testDatas =
1,
1024
];
foreach($testDatas as $k => $v){
$formatSize = $this->formatSize($v);
echo '<pre>';
echo <<<EOT
Notre test en octets : $v || $formatSize est le rendu de la fonction formatSize()
EOT;
echo '</pre>';
}
}
/**
* Retourne la taille plus l'unité arrondie
*
* @link http://dev.petitchevalroux.net/php/afficher-taille-fichier-avec-une-unite-php.271.html source
*
* @param mixed $bytes taille en octets
* @param string $format formatage (http://www.php.net/manual/fr/function.sprintf.php)
* @param string $lang indique la langue des unités de taille
* @return string chaine de caractères formatées
**/
public function formatSize($bytes, $format='%.2f', $lang='fr'){
$units =
'fr' => 'o','Ko','Mo','Go','To'],
'en' => 'B','KB','MB','GB','TB']
];
$translatedUnits = &$units$lang];
if(isset($translatedUnits) === false) $translatedUnits = &$units'en'];
$b = (double)$bytes;
// On gére le cas des tailles de fichier négatives
if($b > 0){
$e = (int) (log($b, 1024));
// Si on a pas l'unité on retourne en To
if(isset($translatedUnits$e]) === false) $e = 4;
$b = $b / pow(1024, $e);
}else{
$b = 0;
$e = 0;
}
return sprintf($format.' %s', $b, $translatedUnits$e]);
}
}
$temp = new Temp;
$temp->testFormatSize();
@Glaived
J'ai dans un premier copier coller bête la code car je ne maitrise pas les class en php constant que cela ne fonctionner pas j'ai suivie le lien: http://dev.petitchevalroux.net/php/afficher-taille-fichier-avec-une-unite-php.271.html