diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2013-06-16 13:14:16 -0700 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2013-06-16 13:14:16 -0700 |
commit | e013e7adea7ce1759e0b65786285c96d0c41e153 (patch) | |
tree | 4f08f54937d692a3e199694b36b530b247efcd79 | |
parent | 8243d19050d231aecc6102154a625e0308b37a34 (diff) | |
parent | d42f7b85f3d6ec524d1144a599edf3b67e88b1a1 (diff) | |
download | nextcloud-server-e013e7adea7ce1759e0b65786285c96d0c41e153.tar.gz nextcloud-server-e013e7adea7ce1759e0b65786285c96d0c41e153.zip |
Merge pull request #3621 from owncloud/path-mimetype
seperate mimetype guessing from filename
-rw-r--r-- | lib/helper.php | 34 | ||||
-rw-r--r-- | tests/lib/helper.php | 9 |
2 files changed, 31 insertions, 12 deletions
diff --git a/lib/helper.php b/lib/helper.php index 225e9fd2a9a..a315c640d1a 100644 --- a/lib/helper.php +++ b/lib/helper.php @@ -364,6 +364,26 @@ class OC_Helper { } /** + * Try to guess the mimetype based on filename + * + * @param string $path + * @return string + */ + static public function getFileNameMimeType($path){ + if(strpos($path, '.')) { + //try to guess the type by the file extension + if(!self::$mimetypes || self::$mimetypes != include 'mimetypes.list.php') { + self::$mimetypes=include 'mimetypes.list.php'; + } + $extension=strtolower(strrchr(basename($path), ".")); + $extension=substr($extension, 1);//remove leading . + return (isset(self::$mimetypes[$extension]))?self::$mimetypes[$extension]:'application/octet-stream'; + }else{ + return 'application/octet-stream'; + } + } + + /** * get the mimetype form a local file * @param string $path * @return string @@ -377,17 +397,7 @@ class OC_Helper { return "httpd/unix-directory"; } - if(strpos($path, '.')) { - //try to guess the type by the file extension - if(!self::$mimetypes || self::$mimetypes != include 'mimetypes.list.php') { - self::$mimetypes=include 'mimetypes.list.php'; - } - $extension=strtolower(strrchr(basename($path), ".")); - $extension=substr($extension, 1);//remove leading . - $mimeType=(isset(self::$mimetypes[$extension]))?self::$mimetypes[$extension]:'application/octet-stream'; - }else{ - $mimeType='application/octet-stream'; - } + $mimeType = self::getFileNameMimeType($path); if($mimeType=='application/octet-stream' and function_exists('finfo_open') and function_exists('finfo_file') and $finfo=finfo_open(FILEINFO_MIME)) { @@ -609,7 +619,7 @@ class OC_Helper { } /** - * remove all files in PHP /oc-noclean temp dir + * remove all files in PHP /oc-noclean temp dir */ public static function cleanTmpNoClean() { $tmpDirNoCleanFile=get_temp_dir().'/oc-noclean/'; diff --git a/tests/lib/helper.php b/tests/lib/helper.php index 336e8f8b3c5..6acb0dfaa6b 100644 --- a/tests/lib/helper.php +++ b/tests/lib/helper.php @@ -67,6 +67,15 @@ class Test_Helper extends PHPUnit_Framework_TestCase { $this->assertEquals($result, $expected); } + function testGetFileNameMimeType() { + $this->assertEquals('text/plain', OC_Helper::getFileNameMimeType('foo.txt')); + $this->assertEquals('image/png', OC_Helper::getFileNameMimeType('foo.png')); + $this->assertEquals('image/png', OC_Helper::getFileNameMimeType('foo.bar.png')); + $this->assertEquals('application/octet-stream', OC_Helper::getFileNameMimeType('.png')); + $this->assertEquals('application/octet-stream', OC_Helper::getFileNameMimeType('foo')); + $this->assertEquals('application/octet-stream', OC_Helper::getFileNameMimeType('')); + } + function testGetStringMimeType() { $result = OC_Helper::getStringMimeType("/data/data.tar.gz"); $expected = 'text/plain; charset=us-ascii'; |