Fix setting the max-upload-size for really large values.

php can only parse filesize units up to gigabytes, not terabytes or petabytes.
This commit is contained in:
Fabian Henze 2014-04-03 01:17:28 +02:00
parent 6d378515f8
commit 7cdb16979a
2 changed files with 27 additions and 3 deletions

View File

@ -280,9 +280,7 @@ class OC_Files {
return false;
$size -= 1;
} else {
$size = OC_Helper::humanFileSize($size);
$size = substr($size, 0, -1); //strip the B
$size = str_replace(' ', '', $size); //remove the space between the size and the postfix
$size = OC_Helper::phpFileSize($size);
}
//don't allow user to break his config -- broken or malicious size input

View File

@ -305,6 +305,32 @@ class OC_Helper {
return "$bytes PB";
}
/**
* @brief Make a php file size
* @param int $bytes file size in bytes
* @return string a php parseable file size
*
* Makes 2048 to 2k and 2^41 to 2048G
*/
public static function phpFileSize($bytes) {
if ($bytes < 0) {
return "?";
}
if ($bytes < 1024) {
return $bytes . "B";
}
$bytes = round($bytes / 1024, 1);
if ($bytes < 1024) {
return $bytes . "K";
}
$bytes = round($bytes / 1024, 1);
if ($bytes < 1024) {
return $bytes . "M";
}
$bytes = round($bytes / 1024, 1);
return $bytes . "G";
}
/**
* @brief Make a computer file size
* @param string $str file size in human readable format