Add a config var to let the choice of having the lower case on the extensions when uploading.
The default value is set to FALSE.
diff --git a/system/libraries/Upload.php b/system/libraries/Upload.php
index 9c2b456..14863d6 100644
--- a/system/libraries/Upload.php
+++ b/system/libraries/Upload.php
@@ -136,6 +136,13 @@
 	public $file_ext		= '';
 
 	/**
+	 * Force filename extension to lowercase
+	 *
+	 * @var	string
+	 */
+	public $file_ext_case		= FALSE;
+
+	/**
 	 * Upload path
 	 *
 	 * @var	string
@@ -294,6 +301,7 @@
 					'file_type'			=> '',
 					'file_size'			=> NULL,
 					'file_ext'			=> '',
+					'file_ext_case' => FALSE,
 					'upload_path'			=> '',
 					'overwrite'			=> FALSE,
 					'encrypt_name'			=> FALSE,
@@ -965,7 +973,11 @@
 	public function get_extension($filename)
 	{
 		$x = explode('.', $filename);
-		return (count($x) !== 1) ? '.'.strtolower(end($x)) : '';
+
+		if($this->file_ext_case)
+			return (count($x) !== 1) ? '.'.strtolower(end($x)) : '';
+		else
+			return (count($x) !== 1) ? '.'.end($x) : '';
 	}
 
 	// --------------------------------------------------------------------