diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php index 5b697777e4..b9eea2fea6 100644 --- a/apps/files/ajax/upload.php +++ b/apps/files/ajax/upload.php @@ -47,7 +47,7 @@ $totalSize = 0; foreach ($files['size'] as $size) { $totalSize += $size; } -if ($totalSize > $maxUploadFilesize) { +if ($maxUploadFilesize >= 0 and $totalSize > $maxUploadFilesize) { OCP\JSON::error(array('data' => array('message' => $l->t('Not enough storage available'), 'uploadMaxFilesize' => $maxUploadFilesize, 'maxHumanFilesize' => $maxHumanFilesize))); diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php index d32e082ade..5c3a0cf93e 100644 --- a/lib/files/filesystem.php +++ b/lib/files/filesystem.php @@ -30,6 +30,7 @@ namespace OC\Files; const FREE_SPACE_UNKNOWN = -2; +const FREE_SPACE_UNLIMITED = -3; class Filesystem { public static $loaded = false; diff --git a/lib/helper.php b/lib/helper.php index 41985ca57a..6ee8a48916 100644 --- a/lib/helper.php +++ b/lib/helper.php @@ -764,7 +764,13 @@ class OC_Helper { public static function maxUploadFilesize($dir) { $upload_max_filesize = OCP\Util::computerFileSize(ini_get('upload_max_filesize')); $post_max_size = OCP\Util::computerFileSize(ini_get('post_max_size')); - $maxUploadFilesize = min($upload_max_filesize, $post_max_size); + if ($upload_max_filesize === 0 and $post_max_size === 0) { + $maxUploadFilesize = \OC\Files\FREE_SPACE_UNLIMITED; + } elseif ($upload_max_filesize === 0 or $post_max_size === 0) { + $maxUploadFilesize = max($upload_max_filesize, $post_max_size); //only the non 0 value counts + } else { + $maxUploadFilesize = min($upload_max_filesize, $post_max_size); + } $freeSpace = \OC\Files\Filesystem::free_space($dir); if($freeSpace !== \OC\Files\FREE_SPACE_UNKNOWN){