466 Stimmen

Richtiger Weg, um die Größe in Bytes in KB, MB, GB in JavaScript umzuwandeln

Ich habe diesen Code erhalten, um die Größe in Bytes über PHP umzurechnen.

Jetzt möchte ich diese Größen in benutzerfreundliche Größen mit JavaScript umrechnen. Ich habe versucht, diesen Code in JavaScript umzuwandeln, der so aussieht:

function formatSizeUnits(bytes){
  if      (bytes >= 1073741824) { bytes = (bytes / 1073741824).toFixed(2) + " GB"; }
  else if (bytes >= 1048576)    { bytes = (bytes / 1048576).toFixed(2) + " MB"; }
  else if (bytes >= 1024)       { bytes = (bytes / 1024).toFixed(2) + " KB"; }
  else if (bytes > 1)           { bytes = bytes + " bytes"; }
  else if (bytes == 1)          { bytes = bytes + " byte"; }
  else                          { bytes = "0 bytes"; }
  return bytes;
}

Ist das der richtige Weg, dies zu tun? Gibt es einen einfacheren Weg?

0voto

Kjut Punkte 46
function bytes2Size(byteVal){
    var units=["Bytes", "KB", "MB", "GB", "TB"];
    var kounter=0;
    var kb= 1024;
    var div=byteVal/1;
    while(div>=kb){
        kounter++;
        div= div/kb;
    }
    return div.toFixed(1) + " " + units[kounter];
}

0voto

Eugen Mihailescu Punkte 3240

So sollte ein Byte einem Menschen dargestellt werden:

function bytesToHuman(bytes, dezimalstellen = 2) {
  // https://de.wikipedia.org/wiki/Bin%C3%A4rpr%C3%A4fix
  const einheiten = ["Bytes", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB"]; // etc

  let i = 0;
  let h = 0;

  let c = 1 / 1023; // ändere es auf 1024 und sieh den Unterschied

  for (; h < c && i < einheiten.length; i++) {
    if ((h = Math.pow(1024, i) / bytes) >= c) {
      break;
    }
  }

  // entferne toFixed und lass `locale` das Formatieren steuern
  return (1 / h).toFixed(dezimalstellen).toLocaleString() + " " + einheiten[i];
}

// Test
for (let i = 0; i < 9; i++) {
  let val = i * Math.pow(10, i);
  console.log(val.toLocaleString() + " Bytes entsprechen " + bytesToHuman(val));

}

// Lass uns etwas herumspielen
console.log(bytesToHuman(1023));
console.log(bytesToHuman(1024));
console.log(bytesToHuman(1025));

-1voto

fahad sheikh Punkte 1

DAS IST DIE EINFACHSTE LÖSUNG.

SCHRITT 1:

npm install bytes

Wöchentliche Downloads: 54.425.499

SCHRITT 2:

const bytes = require('bytes'); // Sie können auch import verwenden

SCHRITT 3:

  function formatBytes(bytes) {
     return bytes(bytes, { unitSeparator: ' ' });
   }

ERGEBNIS

console.log(formatBytes(123456789)); // "117,74 MB"

-9voto

Liladhar Punkte 383

Versuchen Sie diesen einfachen Workaround.

var files = $("#file").get(0).files;               
                var size = files[0].size;
                if (size >= 5000000) {
alert("Dateigröße ist größer als oder gleich 5 MB");
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X