diff --git a/lib/private/helper.php b/lib/private/helper.php
index c82d3bd4ef4ab1d513a7ca83e0986b49bd9023f8..0bef427c6c18937573ce0d0d331ee31a2181a0c0 100644
--- a/lib/private/helper.php
+++ b/lib/private/helper.php
@@ -828,23 +828,39 @@ class OC_Helper {
 	 * @return number of bytes representing
 	 */
 	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'));
-		$freeSpace = \OC\Files\Filesystem::free_space($dir);
-		if ((int)$upload_max_filesize === 0 and (int)$post_max_size === 0) {
-			$maxUploadFilesize = \OC\Files\SPACE_UNLIMITED;
-		} elseif ((int)$upload_max_filesize === 0 or (int)$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);
-		}
+		return min(self::freeSpace($dir), self::uploadLimit());
+	}
 
+	/**
+	 * Calculate free space left within user quota
+	 * 
+	 * @param $dir the current folder where the user currently operates
+	 * @return number of bytes representing
+	 */
+	public static function freeSpace($dir) {
+		$freeSpace = \OC\Files\Filesystem::free_space($dir);
 		if ($freeSpace !== \OC\Files\SPACE_UNKNOWN) {
 			$freeSpace = max($freeSpace, 0);
+			return $freeSpace;
+		} else {
+			return INF;
+		}
+	}
 
-			return min($maxUploadFilesize, $freeSpace);
+	/**
+	 * Calculate PHP upload limit
+	 *
+	 * @return PHP upload file size limit
+	 */
+	public static function uploadLimit() {
+		$upload_max_filesize = OCP\Util::computerFileSize(ini_get('upload_max_filesize'));
+		$post_max_size = OCP\Util::computerFileSize(ini_get('post_max_size'));
+		if ((int)$upload_max_filesize === 0 and (int)$post_max_size === 0) {
+			return INF;
+		} elseif ((int)$upload_max_filesize === 0 or (int)$post_max_size === 0) {
+			return max($upload_max_filesize, $post_max_size); //only the non 0 value counts
 		} else {
-			return $maxUploadFilesize;
+			return min($upload_max_filesize, $post_max_size);
 		}
 	}
 
diff --git a/lib/public/util.php b/lib/public/util.php
index 1d76fd1e1f77624114bd461f67626ba2da7b871a..cf7ac63ba517c5bf380e47b0b9677e8670d8c5d4 100644
--- a/lib/public/util.php
+++ b/lib/public/util.php
@@ -458,4 +458,23 @@ class Util {
 	public static function maxUploadFilesize($dir) {
 		return \OC_Helper::maxUploadFilesize($dir);
 	}
+
+	/**
+	 * Calculate free space left within user quota
+	 * 
+	 * @param $dir the current folder where the user currently operates
+	 * @return number of bytes representing
+	 */
+	public static function freeSpace($dir) {
+		return \OC_Helper::freeSpace($dir);
+	}
+
+	/**
+	 * Calculate PHP upload limit
+	 *
+	 * @return number of bytes representing
+	 */
+	public static function uploadLimit() {
+		return \OC_Helper::uploadLimit();
+	}
 }