Skip to content

Commit f3bd311

Browse files
committed
Fix detecting file extension
1 parent 938bca8 commit f3bd311

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

src/models/File.php

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -153,26 +153,31 @@ private function fillMetaInfo()
153153
$this->name = $this->generateName();
154154
}
155155

156+
/**
157+
* Get extension By MimeType
158+
*
159+
* @param string $mimeType MimeType of the file
160+
* @return string
161+
*/
156162
private function getExtensionByMimeType($mimeType)
157163
{
158164
$extensions = FileHelper::getExtensionsByMimeType($mimeType);
159-
$pathInfo = pathinfo($this->path);
160-
$titleInfo = pathinfo($this->title);
165+
$pathExtension = pathinfo($this->path, PATHINFO_EXTENSION);
166+
$titleExtension = pathinfo($this->title, PATHINFO_EXTENSION);
161167

162-
if (isset($pathInfo['extension'])) {
163-
$extension = $pathInfo['extension'];
164-
} elseif (isset($titleInfo['extension'])) {
165-
$extension = $titleInfo['extension'];
168+
if (array_search($pathExtension, $extensions) !== false) {
169+
return $pathExtension;
170+
} elseif (array_search($titleExtension, $extensions) !== false) {
171+
return $titleExtension;
166172
} else {
167173
$extension = explode('/', $mimeType);
168174
$extension = end($extension);
175+
if (array_search($extension, $extensions) !== false) {
176+
return $extension;
177+
}
169178
}
170179

171-
if (array_search($extension, $extensions) !== false) {
172-
return $extension;
173-
}
174-
175-
return current($extensions);
180+
return current($extensions); // @codeCoverageIgnore
176181
}
177182

178183
/**

tests/FileUploadTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -434,12 +434,12 @@ public function testManualCreateFileWithoutExtension()
434434
$this->assertTrue($file->extension === 'png');
435435
}
436436

437-
public function testManualCreateFileWitExtensionInTitle()
437+
public function testManualCreateFileWithExtensionInTitle()
438438
{
439439
$file = $this->prepareFile('file-300-without-extension', 'test_with_extension_in_title');
440440

441441
$model = new News();
442-
$file = $model->createFile('image_id', $file, 'title.jpg', true);
442+
$file = $model->createFile('image_id', $file, 'title.png', true);
443443
$this->assertTrue($file->extension === 'png');
444444
}
445445

0 commit comments

Comments
 (0)