ruoyi-plus-vben5/apps/web-antd/src/utils/file/index.ts

32 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-01-17 20:35:13 +08:00
/**
*
*
*
* B, KB, MB, GB, TB
*
* @param size
* @param isInteger false如果设置为true
* false
* 3
* @returns "4.5KB""3MB"
*/
export function calculateFileSize(size: number, isInteger = false) {
// 定义文件大小的单位数组
const units = ['B', 'KB', 'MB', 'GB', 'TB'];
// 定义换算基数1KB = 1024B1MB = 1024KB以此类推
const base = 1024;
// 初始化单位索引初始值为0即默认单位为B
let unitIndex = 0;
// 当文件大小大于等于基数且单位索引未超出单位数组范围时,循环进行单位转换
while (size >= base && unitIndex < units.length - 1) {
size /= base;
unitIndex++;
}
// 根据是否需要整数大小,确定输出的精度
const precision = isInteger ? 0 : Math.min(unitIndex, 3);
// 返回格式化后的文件大小字符串
return `${size.toFixed(precision)}${units[unitIndex]}`;
}