30 lines
612 B
TypeScript
30 lines
612 B
TypeScript
|
|
|
|
const BYTE_UNIT = 'B';
|
|
const UNITS = ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
|
|
|
/**
|
|
* Generate human-readable filesize from byte number
|
|
* @returns {string} Readable filesize
|
|
*/
|
|
export function getFilesize(bytes: number, decimalPlaces: number = 1): string
|
|
{
|
|
if (typeof bytes !== 'number')
|
|
{
|
|
return '0 ' + BYTE_UNIT;
|
|
}
|
|
|
|
var thresh = 1024;
|
|
if (Math.abs(bytes) < thresh)
|
|
{
|
|
return bytes + ' ' + BYTE_UNIT;
|
|
}
|
|
var u = -1;
|
|
do
|
|
{
|
|
bytes /= thresh;
|
|
++u;
|
|
} while (Math.abs(bytes) >= thresh && u < UNITS.length - 1);
|
|
|
|
return bytes.toFixed(decimalPlaces) + ' ' + UNITS[u];
|
|
} |