返回文件大小这里采用根据已知文件size换算的方式实现:
export function getFileSize(size) {
function bytesToSize(bytes) {
if (bytes === 0) return '0 B'
let k = 1024,
sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
i = Math.floor(Math.log(bytes) / Math.log(k))
// 先以 e 来分别计算 bytes 与 k 分别对 e 的指数是多少
// 再将两个指数相除即可得到bytes相对于k的一个指数倍数
// 再利用floor向下取整,所得到的即是所应该取的sizes的下标,即sizes[i]
return (bytes / Math.pow(k, i)).toPrecision(4) + ' ' + sizes[i]
// 传入参数大小/对应k的i次方即可得相应数,然后用toPercision限定显示为数最多四位
// 后面拼接sizes[i]找到的单位即可
}
return bytesToSize(parseInt(size))
}
实际使用效果如下:
let num1 = 453242342
let num2 = 123243421312312
let num3 = 87233423453452
console.log("num1",getFileSize(num1)) //num1 432 MB
console.log("num2",getFileSize(num2)) //num2 112 TB
console.log("num3",getFileSize(num3)) //num3 79.3 TB
如果有更漂亮的写法欢迎来讨论,让我们一起有条不紊的持续进步。
喜欢的话不妨点个小小的赞与关注,您的赞与关注将是我源源不断的前进动力。