Index: tests/t3lib/t3lib_div_testcase.php
===================================================================
--- tests/t3lib/t3lib_div_testcase.php	(Revision 5248)
+++ tests/t3lib/t3lib_div_testcase.php	(Arbeitskopie)
@@ -97,6 +97,29 @@
 
 		$this->assertEquals($expectedArray, $actualArray);
 	}
+
+	/**
+	 * Checks whether measurement strings like "100k" return the accordant
+	 * byte representation like 102400 in this case.
+	 *
+	 * @test
+	 */
+	public function checkGetBytesFromSizeMeasurement() {
+		$this->assertEquals(
+			'102400',
+			t3lib_div::getBytesFromSizeMeasurement('100k')
+		);
+
+		$this->assertEquals(
+			'104857600',
+			t3lib_div::getBytesFromSizeMeasurement('100m')
+		);
+
+		$this->assertEquals(
+			'107374182400',
+			t3lib_div::getBytesFromSizeMeasurement('100g')
+		);
+	}
 }
 
 ?>
\ No newline at end of file
Index: t3lib/class.t3lib_extfilefunc.php
===================================================================
--- t3lib/class.t3lib_extfilefunc.php	(Revision 5248)
+++ t3lib/class.t3lib_extfilefunc.php	(Arbeitskopie)
@@ -163,11 +163,11 @@
 		$this->unzipPath = $GLOBALS['TYPO3_CONF_VARS']['BE']['unzip_path'];
 
 		$maxFileSize = intval($GLOBALS['TYPO3_CONF_VARS']['BE']['maxFileSize']);
-		if ($maxFileSize>0)	{
+		if ($maxFileSize > 0) {
 			$this->maxCopyFileSize = $maxFileSize;
 			$this->maxMoveFileSize = $maxFileSize;
-			$this->maxUploadFileSize = $maxFileSize;
 		}
+		$this->maxUploadFileSize = t3lib_div::getMaxUploadFileSize();
 
 			// Initializing file processing commands:
 		$this->fileCmdMap = $fileCmds;
Index: t3lib/class.t3lib_div.php
===================================================================
--- t3lib/class.t3lib_div.php	(Revision 5248)
+++ t3lib/class.t3lib_div.php	(Arbeitskopie)
@@ -3124,9 +3124,52 @@
 		return $path;
 	}
 
+	/**
+	 * Returns the maximum upload size for a file that is allowed. Measured in KB.
+	 * This might be handy to find out the real upload limit that is possible for this 
+	 * TYPO3 installation. The first parameter can be used to set something that overrides
+	 * the maxFileSize, usually for the TCA values.
+	 *
+	 * @param	integer		$localLimit: the number of Kilobytes (!) that should be used as
+	 *						the initial Limit, otherwise $TYPO3_CONF_VARS['BE']['maxFileSize'] will be used
+	 * @return	integer		the maximum size of uploads that are allowed (measuered in kilobytes)
+	 */
+	public static function getMaxUploadFileSize($localLimit = 0) {
+			// don't allow more than the global max file size at all
+		$t3Limit = (intval($localLimit > 0 ? $localLimit : $GLOBALS['TYPO3_CONF_VARS']['BE']['maxFileSize']));
+			// as TYPO3 is handling the file size in KB, multiply by 1024 to get bytes
+		$t3Limit = $t3Limit * 1024;
 
+			// check for PHP restrictions of the maximum size of one of the $_FILES
+		$phpUploadLimit = self::getBytesFromSizeMeasurement(ini_get('upload_max_filesize'));
+			// check for PHP restrictions of the maximum $_POST size
+		$phpPostLimit = self::getBytesFromSizeMeasurement(ini_get('post_max_size'));
+			// if the total amount of post data is smaller (!) than the upload_max_filesize directive,
+			// then this is the real limit in PHP
+		$phpUploadLimit = ($phpPostLimit < $phpUploadLimit ? $phpPostLimit : $phpUploadLimit);
 
+			// is the allowed PHP limit (upload_max_filesize) lower than the TYPO3 limit?, also: revert back to KB
+		return floor($phpUploadLimit < $t3Limit ? $phpUploadLimit : $t3Limit) / 1024;
+	}
 
+	/**
+	 * Gets the bytes value from a measurement string like "100k".
+	 *
+	 * @param	string		$measurement: The measurement (e.g. "100k")
+	 * @return	integer		The bytes value (e.g. 102400)
+	 */
+	public function getBytesFromSizeMeasurement($measurement) {
+		if (stripos($measurement, 'G')) {
+			$bytes = intval($measurement) * 1024 * 1024 * 1024;
+		} else if (stripos($measurement, 'M')) {
+			$bytes = intval($measurement) * 1024 * 1024;
+		} else if (stripos($measurement, 'K')) {
+			$bytes = intval($measurement) * 1024;
+		} else {
+			$bytes = intval($measurement);
+		}
+		return $bytes;
+	}
 
 
 
@@ -3139,6 +3182,10 @@
 
 
 
+
+
+
+
 	/*************************
 	 *
 	 * DEBUG helper FUNCTIONS
