Par codename44 à 11h43 :
Très pratique merci.
En revanche cela ne fonctionne pas pour les gros volumes > 1 To.
Il faut rajouter la ligne suivante après le "for", pour dans tous les cas renvoyer avec l'unité la plus forte :
return (aSize / def[def.length - 1][0]).toFixed(2) + ' ' + def[def.length - 1][1];
Par Patrice à 13h15 :
Oui :-)
On peut aussi ajouter des nouvelles unités à la liste def selon le besoin.
Par monpoto à 01h17 :
Bonsoir,
Fonction très propre, ça m'a aidé énormément dans mes projets. Par contre, je cherche une fonction JS qui fait le cas inverse c'est-à-dire on lui passe en paramètre un nombre,l’unité puis elle retourne la valeur en octet.
exemple : f(2,"Mo") = valeur en Octet
Par Bawaaaaah à 14h58 :
Je renvoie le dernier commentaire le code est pas passer
J'ai apporter quelques modification comme conservation du signe et prendre la dernière valeur existante si aucune ne match
(par convention kio = 1024 octets et ko = 1000 octets)
function FileConvertSize(aSize) {
let sign = Math.sign(aSize);
aSize = Math.abs(aSize);
let def = [
[1, "octets"],
[1024, "kio"],
[1024 * 1024, "Mio"],
[1024 * 1024 * 1024, "Gio"],
[1024 * 1024 * 1024 * 1024, "Tio"],
[1024 * 1024 * 1024 * 1024 * 1024, "Pio"],
[1024 * 1024 * 1024 * 1024 * 1024 * 1024, "Eio"],
[1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024, "Zio"],
[1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024, "Yio"],
[1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024, "kYio"]
];
for (let i = 0; i < def.length; i++) {
if (aSize < def[i][0])
return (sign * (aSize / def[i - 1][0])).toFixed(2) + " " + def[i - 1][1];
}
return (sign * (aSize / def[def.length - 1][0])).toFixed(2) + " " + def[def.length - 1][1];
}
Par Patrice à 00h18 :
Merci Bawaaaaah ;-)