summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/filestorage/local.php9
-rw-r--r--lib/mimetypes.fixlist.php12
2 files changed, 20 insertions, 1 deletions
diff --git a/lib/filestorage/local.php b/lib/filestorage/local.php
index cfc27159786..1261bd3aa83 100644
--- a/lib/filestorage/local.php
+++ b/lib/filestorage/local.php
@@ -132,6 +132,13 @@ class OC_Filestorage_Local extends OC_Filestorage{
public function getMimeType($fspath){
if($this->is_readable($fspath)){
$mimeType='application/octet-stream';
+ if ($mimeType=='application/octet-stream') {
+ self::$mimetypes = include('mimetypes.fixlist.php');
+ $extention=strtolower(strrchr(basename($fspath), "."));
+ $extention=substr($extention,1);//remove leading .
+ $mimeType=(isset(self::$mimetypes[$extention]))?self::$mimetypes[$extention]:'application/octet-stream';
+
+ }
if (@is_dir($this->datadir.$fspath)) {
// directories are easy
return "httpd/unix-directory";
@@ -158,7 +165,7 @@ class OC_Filestorage_Local extends OC_Filestorage{
}
if ($mimeType=='application/octet-stream') {
// 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), "."));
diff --git a/lib/mimetypes.fixlist.php b/lib/mimetypes.fixlist.php
new file mode 100644
index 00000000000..f2d86d0db1e
--- /dev/null
+++ b/lib/mimetypes.fixlist.php
@@ -0,0 +1,12 @@
+<?php
+return array(
+ 'ics'=>'text/calendar',
+ 'ical'=>'text/calendar',
+ 'js'=>'application/javascript',
+ 'odt'=>'application/vnd.oasis.opendocument.text',
+ 'ods'=>'application/vnd.oasis.opendocument.spreadsheet',
+ 'odg'=>'application/vnd.oasis.opendocument.graphics',
+ 'odp'=>'application/vnd.oasis.opendocument.presentation',
+ 'pl'=>'text/x-script.perl',
+ 'py'=>'text/x-script.phyton',
+);