Merge pull request #8023 from flyser/master

Fix setting the max-upload-size for really large values.
This commit is contained in:
Morris Jobke 2014-05-03 11:49:38 +02:00
commit 623161b9a9
3 changed files with 49 additions and 3 deletions

View File

@ -279,9 +279,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

View File

@ -30,6 +30,28 @@ class Test_Helper extends PHPUnit_Framework_TestCase {
);
}
/**
* @dataProvider phpFileSizeProvider
*/
public function testPhpFileSize($expected, $input)
{
$result = OC_Helper::phpFileSize($input);
$this->assertEquals($expected, $result);
}
public function phpFileSizeProvider()
{
return array(
array('0B', 0),
array('1K', 1024),
array('9.5M', 10000000),
array('1.3G', 1395864371),
array('465.7G', 500000000000),
array('465661.3G', 500000000000000),
array('465661287.3G', 500000000000000000),
);
}
/**
* @dataProvider computerFileSizeProvider
*/