filebrowser/frontend/src/utils/filesizes.js

32 lines
1011 B
JavaScript

export function getHumanReadableFilesize(fileSizeBytes) {
let size; // size in the specified unit
let unit; // the unit name
unit = 'bytes';
size = fileSizeBytes;
switch (true) {
case fileSizeBytes < 1024:
break;
case fileSizeBytes < 1000 ** 2: // 1 KB - 1 MB
size = fileSizeBytes / 1000;
unit = 'KB';
break;
case fileSizeBytes < 1000 ** 3: // 1 MB - 1 GB
size = fileSizeBytes / (1000 ** 2);
unit = 'MB';
break;
case fileSizeBytes < 1000 ** 4: // 1 GB - 1 TB
size = fileSizeBytes / (1000 ** 3);
unit = 'GB';
break;
case fileSizeBytes < 1000 ** 5: // 1 TB - 1 PB
size = fileSizeBytes / (1000 ** 4);
unit = 'TB';
break;
default: // >= 1 PB
size = fileSizeBytes / (1000 ** 5);
unit = 'PB';
break;
}
return `${size.toFixed(1)} ${unit}`;
}