diff --git a/lib/filestorage.php b/lib/filestorage.php
index 819ad2e60b3a2bff73075aab66b6b7c5d558eae0..c2614dc5dcf9e891115b33ba7fb9d06dceb5815c 100644
--- a/lib/filestorage.php
+++ b/lib/filestorage.php
@@ -65,6 +65,7 @@ OC_FILESYSTEM::registerStorageType('local','OC_FILESTORAGE_LOCAL',array('datadir
  */
 class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
 	private $datadir;
+	private static $mimetypes=null;
 	public function __construct($arguments){
 		$this->datadir=$arguments['datadir'];
 		if(substr($this->datadir,-1)!=='/'){
@@ -209,71 +210,14 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
 				$mime_type=substr($reply,0,strrpos($reply,' '));
 			}
 			if (empty($mime_type)) {
-				// Fallback solution: try to guess the type by the file extension
-				// TODO: add more ...
-				switch (strtolower(strrchr(basename($fspath), "."))) {
-					case '.css':
-						$mime_type = 'text/css';
-						break;
-					case '.flac':
-						$mime_type = 'audio/flac';
-						break;
-					case '.gif':
-						$mime_type = 'image/gif';
-						break;
-					case '.gzip':
-					case '.gz':
-						$mime_type = 'application/x-gzip';
-						break;
-					case '.htm':
-					case '.html':
-						$mime_type = 'text/html';
-						break;
-					case '.jpeg':
-					case '.jpg':
-						$mime_type = 'image/jpeg';
-						break;
-					case '.js':
-						$mime_type = 'application/x-javascript';
-						break;
-					case '.oga':
-					case '.ogg':
-						$mime_type = 'audio/ogg';
-						break;
-					case '.ogv':
-						$mime_type = 'video/ogg';
-						break;
-					case '.pdf':
-						$mime_type = 'application/pdf';
-						break;
-					case '.png':
-						$mime_type = 'image/png';
-						break;
-					case '.svg':
-						$mime_type = 'image/svg+xml';
-						break;
-					case '.tar':
-						$mime_type = 'application/x-tar';
-						break;
-					case '.tgz':
-						$mime_type = 'application/x-compressed';
-						break;
-					case '.tif':
-					case '.tiff':
-						$mime_type = 'image/tiff';
-						break;
-					case '.txt':
-						$mime_type = 'text/plain';
-						break;
-					case '.zip':
-						$mime_type = 'application/zip';
-						break;
-					default:
-						$mime_type = 'application/octet-stream';
-						break;
+				// Fallback solution: (try to guess the type by the file extension
+				if(!self::$mimetypes){
+					self::$mimetypes=include('mimetypes.list.php');
 				}
+				$extention=strtolower(strrchr(basename($fspath), "."));
+				$extention=substr($extention,1);//remove leading .
+				$mime_type=(isset(self::$mimetypes[$extention]))?self::$mimetypes[$extention]:'application/octet-stream';
 			}
-
 			return $mime_type;
 		}
 	}
diff --git a/lib/mimetypes.list.php b/lib/mimetypes.list.php
new file mode 100644
index 0000000000000000000000000000000000000000..6d8b3b9abce59548c1ea910dde5ba0989aea138a
--- /dev/null
+++ b/lib/mimetypes.list.php
@@ -0,0 +1,81 @@
+<?php
+/**
+* ownCloud
+*
+* @author Robin Appelman
+* @copyright 2011 Robin Appelman icewind1991@gmail.com
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+* License as published by the Free Software Foundation; either
+* version 3 of the License, or any later version.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+*
+* You should have received a copy of the GNU Affero General Public
+* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+
+/**
+ * list of mimetypes by extention
+ */
+
+return array(
+	'css'=>'text/css',
+	'flac'=>'audio/flac',
+	'gif'=>'image/gif',
+	'gzip'=>'application/x-gzip',
+	'gz'=>'application/x-gzip',
+	'html'=>'text/html',
+	'htm'=>'text/html',
+	'jpeg'=>'image/jpeg',
+	'jpg'=>'image/jpeg',
+	'js'=>'application/javascript',
+	'oga'=>'audio/ogg',
+	'ogg'=>'audio/ogg',
+	'ogv'=>'video/ogg',
+	'pdf'=>'application/pdf',
+	'png'=>'image/png',
+	'svg'=>'image/svg+xml',
+	'tar'=>'application/x-tar',
+	'tgz'=>'application/x-compressed',
+	'tar.gz'=>'application/x-compressed',
+	'tif'=>'image/tiff',
+	'tiff'=>'image/tiff',
+	'txt'=>'text/plain',
+	'zip'=>'application/zip',
+	'wav'=>'audio/wav',
+	'odt'=>'application/vnd.oasis.opendocument.text',
+	'ods'=>'application/vnd.oasis.opendocument.spreadsheet',
+	'odg'=>'application/vnd.oasis.opendocument.graphics',
+	'odp'=>'application/vnd.oasis.opendocument.presentation',
+	'kra'=>'application/x-krita',
+	'mp3'=>'audio/mpeg',
+	'doc'=>'application/msword',
+	'docx'=>'application/msword',
+	'xls'=>'application/msexcel',
+	'xlsx'=>'application/msexcel',
+	'php'=>'application/x-php',
+	'exe'=>'application/x-ms-dos-executable',
+	'pl'=>'application/x-pearl',
+	'py'=>'application/x-python',
+	'blend'=>'application/x-blender',
+	'xcf'=>'application/x-gimp',
+	'psd'=>'application/x-photoshop',
+	'xml'=>'application/xml',
+	'avi'=>'video/x-msvideo',
+	'dv'=>'video/dv',
+	'm2t'=>'video/mp2t',
+	'mp4'=>'video/mp4',
+	'm4v'=>'video/mp4',
+	'mpg'=>'video/mpeg',
+	'mpeg'=>'video/mpeg',
+	'mov'=>'video/quicktime',
+	'webm'=>'video/webm',
+	'wmv'=>'video/x-ms-asf'
+);
+?>
\ No newline at end of file