diff --git a/src/Utils/FileUtil.php b/src/Utils/FileUtil.php index 304b3f83c..1b1b3ff98 100644 --- a/src/Utils/FileUtil.php +++ b/src/Utils/FileUtil.php @@ -23,12 +23,12 @@ public function findAvailableName(string $fileName, string $path = '', string $d public function explodeExtension(string $fileName): array { - if (($pos = strrpos($fileName, '.')) !== false) { - $ext = substr($fileName, $pos); - $fileName = substr($fileName, 0, $pos); - } + $pathinfo = pathinfo($fileName); - return [$fileName, $ext ?? '']; + return [ + $pathinfo['filename'] ?? '', + isset($pathinfo['extension']) ? '.'.$pathinfo['extension'] : '', + ]; } private function normalizeName(string $fileName): array|string|null diff --git a/tests/Unit/Utils/FileUtilTest.php b/tests/Unit/Utils/FileUtilTest.php index 1a8a2b9d7..e1b42eaf8 100644 --- a/tests/Unit/Utils/FileUtilTest.php +++ b/tests/Unit/Utils/FileUtilTest.php @@ -47,3 +47,12 @@ $fileUtil->findAvailableName('ôéàtest*.txt', 'tmp', 'local'), ); }); + +it('doesn’t care about relative path', function () { + $fileUtil = new FileUtil(); + + $this->assertEquals( + 'test.txt', + $fileUtil->findAvailableName('../../../test.txt', 'tmp', 'local'), + ); +});