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