-1

我需要汇总上传文件的大小并确定是 kb、mb 还是 gb 的大小格式。

细节:当用户​​上传图片时,图片属性是通过全局$_FILES获取的。例如,如果用户上传了一张 29.6kb 的图片,而我决定检查上传图片的大小,则 $_FILES[size] 数组将大小回显为 30358。

我试图对从 $_FILES[size] 获得的值做的是将图片大小从 30758 舍入到 31,然后将文件大小格式(kb、mb 或 gb)连接到它并回显为31kb。

我真的希望得到帮助...谢谢!

4

3 回答 3

0

那是怎么回事?

$file =  $_FILES[size];
$s = 'kb';
$x = round($file/1000, 1);
if($x > 1000){ 
    $x = $x/1000;
    $s = 'mb';
} else if($x > 100000) {
    $x = $x/100000;
    $s = 'gb';
}
echo $x . ' ' . $s;
于 2013-02-06T11:35:19.683 回答
0

您可以通过使用 php 命令 round(float) 和一些简单的数学来完成此操作:

define("K",1024);
define("M",1048576);
define("G",1073741824);

$size = $_FILES[size];
$gigs = $size / G;
$megs = ($size - ($gigs * G)) / M;
$kils = ($size - ($gigs * G) - ($megs * M)) / K;

if($gigs > 0) echo(round($gigs));
elseif($megs > 0) echo(round($megs));
elseif($kils > 0) echo(round($kils));
else echo("Size is zero");
于 2013-02-06T11:39:00.300 回答
0

Laravel使用这个辅助函数:

function get_file_size($size)
{
  $units = array('Bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB');
  return @round($size / pow(1024, ($i = floor(log($size, 1024)))), 2).' '.$units[$i];
}

*来源https ://github.com/laravel/laravel/blob/master/laravel/helpers.php

我还没有看到更优雅的方式来做到这一点。

于 2013-02-06T11:59:26.190 回答