返回 导航

其他

hangge.com

JS - 文件大小的格式化显示 (B、K、M、G、TB)

作者:hangge | 2019-03-05 08:10
    通常来说我们获取到的文件大小,或者数据库里保存的文件大小都是以字节为单位的。但如果需要在页面上显示,为了方便阅读,就需要将其格式化为合适的单位显示。比如:1.5G200.00M...

1,封装一个格式化方法

为了方便使用,我们创建一个 formatSize 方法用于格式化文件大小。
/**
 * 格式化文件大小, 输出成带单位的字符串
 * @param {Number} size 文件大小
 * @param {Number} [pointLength=2] 精确到的小数点数。
 * @param {Array} [units=[ 'B', 'K', 'M', 'G', 'TB' ]] 单位数组。从字节,到千字节,一直往上指定。
 *    如果单位数组里面只指定了到了K(千字节),同时文件大小大于M, 此方法的输出将还是显示成多少K.
 */
function formatSize(size, pointLength, units) {
  var unit;
  units = units || [ 'B', 'K', 'M', 'G', 'TB' ];
  while ( (unit = units.shift()) && size > 1024 ) {
      size = size / 1024;
  }
  return (unit === 'B' ? size : size.toFixed( pointLength === undefined ? 2 : pointLength)) + unit;
}

2,使用样例

console.log("---- 只传文件大小 -----");
console.log(formatSize(1024));
console.log(formatSize(1024 * 600.55));
console.log(formatSize(1024 * 1024 * 1024));
console.log(formatSize(1024 * 1024 * 1024 + 1));
console.log("---- 指定小数点位数 -----");
console.log(formatSize(1024, 0));
console.log(formatSize(1024 * 600.55, 0));
console.log(formatSize(1024 * 1024 * 1024, 0));
console.log(formatSize(1024 * 1024 * 1024 + 1, 0));
console.log("---- 自定义单位数组 -----");
console.log(formatSize(1024, 0, ['B', 'KB', 'MB', 'GB']));
console.log(formatSize(1024 * 600.55, 0, ['B', 'KB', 'MB', 'GB']));
console.log(formatSize(1024 * 1024 * 1024, 0, ['B', 'KB', 'MB', 'GB']));
console.log(formatSize(1024 * 1024 * 1024 + 1, 0, ['B', 'KB', 'MB', 'GB']));
评论

全部评论(0)

回到顶部