aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabian Henze <flyser42@gmx.de>2014-04-03 01:17:28 +0200
committerFabian Henze <flyser42@gmx.de>2014-04-03 01:17:28 +0200
commit7cdb16979a6c7e75b71dd8c7c5b39b6482041fb8 (patch)
tree3063e5cd23f3c0d0a4cb46c14c2c79cd26bd6d38
parent6d378515f8e0d1a88089d58c5cbc3a61df06887b (diff)
downloadnextcloud-server-7cdb16979a6c7e75b71dd8c7c5b39b6482041fb8.tar.gz
nextcloud-server-7cdb16979a6c7e75b71dd8c7c5b39b6482041fb8.zip
Fix setting the max-upload-size for really large values.
php can only parse filesize units up to gigabytes, not terabytes or petabytes.
-rw-r--r--lib/private/files.php4
-rw-r--r--lib/private/helper.php26
2 files changed, 27 insertions, 3 deletions
diff --git a/lib/private/files.php b/lib/private/files.php
index bfe6d3c02da..46cb85a6302 100644
--- a/lib/private/files.php
+++ b/lib/private/files.php
@@ -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
diff --git a/lib/private/helper.php b/lib/private/helper.php
index d7ac0b5f4fa..5cd1fbacce7 100644
--- a/lib/private/helper.php
+++ b/lib/private/helper.php
@@ -306,6 +306,32 @@ class OC_Helper {
}
/**
+ * @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
* @return int a file size in bytes