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