]> source.dussan.org Git - nextcloud-server.git/commitdiff
improve mimetype detection
authorRobin Appelman <icewind1991@gmail.com>
Sun, 23 Oct 2011 09:26:54 +0000 (11:26 +0200)
committerRobin Appelman <icewind1991@gmail.com>
Sun, 23 Oct 2011 09:35:29 +0000 (11:35 +0200)
lib/filestorage/local.php

index 58c34e972def87c0727dd93d87eeb8e3ee40a7ff..01523b6b0b3647a6f65fb46b5343623dd1ba0988 100644 (file)
@@ -126,18 +126,21 @@ class OC_Filestorage_Local extends OC_Filestorage{
 
        public function getMimeType($fspath){
                if($this->is_readable($fspath)){
+                       $mimeType='application/octet-stream';
                        if (@is_dir($this->datadir.$fspath)) {
                                // directories are easy
                                return "httpd/unix-directory";
-                       }elseif (function_exists('finfo_open') and function_exists('finfo_file') and $finfo=finfo_open(FILEINFO_MIME)){
+                       }
+                       if($mimeType=='application/octet-stream' and function_exists('finfo_open') and function_exists('finfo_file') and $finfo=finfo_open(FILEINFO_MIME)){
                                $mimeType =strtolower(finfo_file($finfo,$this->datadir.$fspath));
                                $mimeType=substr($mimeType,0,strpos($mimeType,';'));
                                finfo_close($finfo);
-                               return $mimeType;
-                       } else if (function_exists("mime_content_type")) {
+                       }
+                       if ($mimeType=='application/octet-stream' && function_exists("mime_content_type")) {
                                // use mime magic extension if available
-                               $mime_type = mime_content_type($this->datadir.$fspath);
-                       } else if (OC_Helper::canExecute("file")) {
+                               $mimeType = mime_content_type($this->datadir.$fspath);
+                       }
+                       if ($mimeType=='application/octet-stream' && OC_Helper::canExecute("file")) {
                                // it looks like we have a 'file' command,
                                // lets see it it does have mime support
                                $fspath=str_replace("'","\'",$fspath);
@@ -146,18 +149,18 @@ class OC_Filestorage_Local extends OC_Filestorage{
                                pclose($fp);
 
                                //trim the character set from the end of the response
-                               $mime_type=substr($reply,0,strrpos($reply,' '));
+                               $mimeType=substr($reply,0,strrpos($reply,' '));
                        }
-                       if (empty($mime_type)) {
+                       if ($mimeType=='application/octet-stream') {
                                // 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';
+                               $mimeType=(isset(self::$mimetypes[$extention]))?self::$mimetypes[$extention]:'application/octet-stream';
                        }
-                       return $mime_type;
+                       return $mimeType;
                }
        }