improve mimetype detection
This commit is contained in:
parent
38bb503ff6
commit
122fa190c6
|
@ -126,18 +126,21 @@ class OC_Filestorage_Local extends OC_Filestorage{
|
||||||
|
|
||||||
public function getMimeType($fspath){
|
public function getMimeType($fspath){
|
||||||
if($this->is_readable($fspath)){
|
if($this->is_readable($fspath)){
|
||||||
|
$mimeType='application/octet-stream';
|
||||||
if (@is_dir($this->datadir.$fspath)) {
|
if (@is_dir($this->datadir.$fspath)) {
|
||||||
// directories are easy
|
// directories are easy
|
||||||
return "httpd/unix-directory";
|
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 =strtolower(finfo_file($finfo,$this->datadir.$fspath));
|
||||||
$mimeType=substr($mimeType,0,strpos($mimeType,';'));
|
$mimeType=substr($mimeType,0,strpos($mimeType,';'));
|
||||||
finfo_close($finfo);
|
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
|
// use mime magic extension if available
|
||||||
$mime_type = mime_content_type($this->datadir.$fspath);
|
$mimeType = mime_content_type($this->datadir.$fspath);
|
||||||
} else if (OC_Helper::canExecute("file")) {
|
}
|
||||||
|
if ($mimeType=='application/octet-stream' && OC_Helper::canExecute("file")) {
|
||||||
// it looks like we have a 'file' command,
|
// it looks like we have a 'file' command,
|
||||||
// lets see it it does have mime support
|
// lets see it it does have mime support
|
||||||
$fspath=str_replace("'","\'",$fspath);
|
$fspath=str_replace("'","\'",$fspath);
|
||||||
|
@ -146,18 +149,18 @@ class OC_Filestorage_Local extends OC_Filestorage{
|
||||||
pclose($fp);
|
pclose($fp);
|
||||||
|
|
||||||
//trim the character set from the end of the response
|
//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
|
// Fallback solution: (try to guess the type by the file extension
|
||||||
if(!self::$mimetypes){
|
if(!self::$mimetypes){
|
||||||
self::$mimetypes=include('mimetypes.list.php');
|
self::$mimetypes=include('mimetypes.list.php');
|
||||||
}
|
}
|
||||||
$extention=strtolower(strrchr(basename($fspath), "."));
|
$extention=strtolower(strrchr(basename($fspath), "."));
|
||||||
$extention=substr($extention,1);//remove leading .
|
$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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue