如何在JavaScript中将文件大小转换为MB?

33

如何在JavaScript中将文件大小转换为MB?有时候返回的是长整型,我想将其转换为MB而不是字节或KB。

如果可能的话,如果文件大小小于1MB,我希望将结果显示为"0.01MB"这样的格式。


你可以先弄清楚一兆字节(1,048,576字节)有多少字节,然后使用基本数学运算来计算你要找的数字。搜索JavaScript的数学方法,相信你很快就能弄明白,这是相当简单的东西。 - adeneo
2
@adeneo “非常简单的东西”是最后的名言。类似于jquery.timeago.js的模糊时间会很有用。 - Leif Gruenwoldt
1
@leif81 找到了你正在寻找的东西... - Tim Sylvester
3个回答

79
var sizeInMB = (sizeInBytes / (1024*1024)).toFixed(2);
alert(sizeInMB + 'MB');

1
变量 sizeInMB = $([sizeInBytes]).map(function(){return (this/1024/1024).toFixed(2) })[0] - Tim Sylvester

16

JavaScript ES5或更早版本:

function bytesToMegaBytes(bytes) { 
  return bytes / (1024*1024); 
}

Javscript ES6(箭头函数):

const bytesToMegaBytes = bytes => bytes / (1024*1024);

如果您想要精确地保留小数点后几位,请按以下步骤操作:

function (bytes, roundTo) {
  var converted = bytes / (1024*1024);
  return roundTo ? converted.toFixed(roundTo) : converted;
}
在E6或更高版本中:
const bytesToMegaBytes = (bytes, digits) => roundTo ? (bytes / (1024*1024)).toFixed(digits) : (bytes / (1024*1024));
  1. Number.prototype.toFixed()的详细信息。
  2. 您可以查看下面的文件大小转换表,以供将来参考。 转换表

2

仅限于 MB +,多功能字节转换器,可将字节转换为 KB、MB、GB

function byteConverter( bytes, decimals, only) {
    const K_UNIT = 1024;
    const SIZES = ["Bytes", "KB", "MB", "GB", "TB", "PB"];

    if(bytes== 0) return "0 Byte";
  
    if(only==="MB") return (bytes / (K_UNIT*K_UNIT)).toFixed(decimals) + " MB" ;
  
    let i = Math.floor(Math.log(bytes) / Math.log(K_UNIT));
    let resp = parseFloat((bytes / Math.pow(K_UNIT, i)).toFixed(decimals)) + " " + SIZES[i];
  
    return resp;
}


let bytesInput = 2100050090;
console.log(byteConverter(bytesInput, 2));
console.log(byteConverter(bytesInput, 2, "MB" ));


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接