mirror of
https://github.com/notf0und/SGS
synced 2026-07-18 02:31:08 +00:00
bae79d68ab
* Add Pint * Format code
29 lines
650 B
PHP
29 lines
650 B
PHP
<?php
|
|
|
|
namespace App\Helpers;
|
|
|
|
class FileSize
|
|
{
|
|
private const UNITS = ['', 'K', 'M', 'G', 'T'];
|
|
|
|
private const THRESHOLD = 1024;
|
|
|
|
/**
|
|
* Format bytes into human-readable file size.
|
|
*/
|
|
public static function format(int $bytes): string
|
|
{
|
|
if ($bytes === 0) {
|
|
return '0';
|
|
}
|
|
|
|
$unitIndex = (int) floor(log($bytes, self::THRESHOLD));
|
|
$unitIndex = min($unitIndex, count(self::UNITS) - 1);
|
|
|
|
$size = $bytes / pow(self::THRESHOLD, $unitIndex);
|
|
$decimals = $unitIndex === 0 ? 0 : 2;
|
|
|
|
return number_format($size, $decimals, '.', '').self::UNITS[$unitIndex];
|
|
}
|
|
}
|