diff options
author | Lukas Reschke <lukas@statuscode.ch> | 2016-09-27 18:52:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-27 18:52:48 +0200 |
commit | c4d263199c992e890f5b413c26645c1156e0cfe6 (patch) | |
tree | 2da78188e6d8f7e13aadc0e24e29a54c0ae72a55 | |
parent | 2f488ce3730d3dc8aa0df7b6e57c46478fcf1288 (diff) | |
parent | 9b4de310bdfc3eeaafd236124cb17ee58d11c852 (diff) | |
download | nextcloud-server-c4d263199c992e890f5b413c26645c1156e0cfe6.tar.gz nextcloud-server-c4d263199c992e890f5b413c26645c1156e0cfe6.zip |
Merge pull request #1521 from nextcloud/fix-mimetypedetect-hiddenfolder
Fix mimetype detection inside hidden folders (#26138)
-rw-r--r-- | lib/private/Files/Type/Detection.php | 6 | ||||
-rw-r--r-- | tests/lib/Files/Type/DetectionTest.php | 2 |
2 files changed, 6 insertions, 2 deletions
diff --git a/lib/private/Files/Type/Detection.php b/lib/private/Files/Type/Detection.php index 66ef0dd2aab..84d727ebb0e 100644 --- a/lib/private/Files/Type/Detection.php +++ b/lib/private/Files/Type/Detection.php @@ -166,9 +166,11 @@ class Detection implements IMimeTypeDetector { public function detectPath($path) { $this->loadMappings(); - if (strpos($path, '.')) { + $fileName = basename($path); + // note: leading dot doesn't qualify as extension + if (strpos($fileName, '.') > 0) { //try to guess the type by the file extension - $extension = strtolower(strrchr(basename($path), ".")); + $extension = strtolower(strrchr($fileName, '.')); $extension = substr($extension, 1); //remove leading . return (isset($this->mimetypes[$extension]) && isset($this->mimetypes[$extension][0])) ? $this->mimetypes[$extension][0] diff --git a/tests/lib/Files/Type/DetectionTest.php b/tests/lib/Files/Type/DetectionTest.php index 11267ee2e7d..87e0f94e3e2 100644 --- a/tests/lib/Files/Type/DetectionTest.php +++ b/tests/lib/Files/Type/DetectionTest.php @@ -74,6 +74,8 @@ class DetectionTest extends \Test\TestCase { $this->assertEquals('text/plain', $this->detection->detectPath('foo.txt')); $this->assertEquals('image/png', $this->detection->detectPath('foo.png')); $this->assertEquals('image/png', $this->detection->detectPath('foo.bar.png')); + $this->assertEquals('image/png', $this->detection->detectPath('.hidden/foo.png')); + $this->assertEquals('image/png', $this->detection->detectPath('test.jpg/foo.png')); $this->assertEquals('application/octet-stream', $this->detection->detectPath('.png')); $this->assertEquals('application/octet-stream', $this->detection->detectPath('foo')); $this->assertEquals('application/octet-stream', $this->detection->detectPath('')); |