summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMagnus Walbeck <mw@mwalbeck.org>2017-01-23 13:28:35 +0100
committerMagnus Walbeck <mw@mwalbeck.org>2017-01-23 13:28:35 +0100
commiteadc1ac6378995beb17c983729127b8bdf1b122a (patch)
tree518ed239598deab62bb65ca68d03785bef12cd30
parent5d486478d3d6d316b1895ea440a05f31488e2f9f (diff)
downloadnextcloud-server-eadc1ac6378995beb17c983729127b8bdf1b122a.tar.gz
nextcloud-server-eadc1ac6378995beb17c983729127b8bdf1b122a.zip
Mimetype detection for hidden files
Signed-off-by: Magnus Walbeck <mw@mwalbeck.org>
-rw-r--r--lib/private/Files/Type/Detection.php6
-rw-r--r--tests/lib/Files/Type/DetectionTest.php4
2 files changed, 10 insertions, 0 deletions
diff --git a/lib/private/Files/Type/Detection.php b/lib/private/Files/Type/Detection.php
index 84d727ebb0e..b4c2ec01a8a 100644
--- a/lib/private/Files/Type/Detection.php
+++ b/lib/private/Files/Type/Detection.php
@@ -167,6 +167,12 @@ class Detection implements IMimeTypeDetector {
$this->loadMappings();
$fileName = basename($path);
+
+ // remove leading dot on hidden files with a file extension
+ if (strpos($fileName, '.') === 0 && strpos($fileName, '.', 1)) {
+ $fileName = substr($fileName, 1);
+ }
+
// note: leading dot doesn't qualify as extension
if (strpos($fileName, '.') > 0) {
//try to guess the type by the file extension
diff --git a/tests/lib/Files/Type/DetectionTest.php b/tests/lib/Files/Type/DetectionTest.php
index 87e0f94e3e2..5c1f48a806e 100644
--- a/tests/lib/Files/Type/DetectionTest.php
+++ b/tests/lib/Files/Type/DetectionTest.php
@@ -74,9 +74,13 @@ 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.png'));
+ $this->assertEquals('image/png', $this->detection->detectPath('.hidden.foo.png'));
$this->assertEquals('image/png', $this->detection->detectPath('.hidden/foo.png'));
+ $this->assertEquals('image/png', $this->detection->detectPath('.hidden/.hidden.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('..hidden'));
$this->assertEquals('application/octet-stream', $this->detection->detectPath('foo'));
$this->assertEquals('application/octet-stream', $this->detection->detectPath(''));
}