Skip to content
Snippets Groups Projects
Commit 122fa190 authored by Robin Appelman's avatar Robin Appelman
Browse files

improve mimetype detection

parent 38bb503f
Branches
No related tags found
No related merge requests found
......@@ -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;
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment