diff --git a/core/modules/file/src/Plugin/rest/resource/FileUploadResource.php b/core/modules/file/src/Plugin/rest/resource/FileUploadResource.php index 10810581a22b..8efbb92d5d94 100644 --- a/core/modules/file/src/Plugin/rest/resource/FileUploadResource.php +++ b/core/modules/file/src/Plugin/rest/resource/FileUploadResource.php @@ -377,7 +377,7 @@ class FileUploadResource extends ResourceBase { // Make sure only the filename component is returned. Path information is // stripped as per https://tools.ietf.org/html/rfc6266#section-4.3. - return basename($filename); + return $this->fileSystem->basename($filename); } /** diff --git a/core/modules/rest/tests/src/Functional/FileUploadResourceTestBase.php b/core/modules/rest/tests/src/Functional/FileUploadResourceTestBase.php index cb3ef3e27a0f..994a4c3ccb51 100644 --- a/core/modules/rest/tests/src/Functional/FileUploadResourceTestBase.php +++ b/core/modules/rest/tests/src/Functional/FileUploadResourceTestBase.php @@ -373,11 +373,13 @@ abstract class FileUploadResourceTestBase extends ResourceTestBase { $uri = Url::fromUri('base:' . static::$postUri); - $response = $this->fileRequest($uri, $this->testFileData, ['Content-Disposition' => 'file; filename="example-✓.txt"']); + // It is important that the filename starts with a unicode character. See + // https://bugs.php.net/bug.php?id=77239. + $response = $this->fileRequest($uri, $this->testFileData, ['Content-Disposition' => 'file; filename="Èxample-✓.txt"']); $this->assertSame(201, $response->getStatusCode()); - $expected = $this->getExpectedNormalizedEntity(1, 'example-✓.txt', TRUE); + $expected = $this->getExpectedNormalizedEntity(1, 'Èxample-✓.txt', TRUE); $this->assertResponseData($expected, $response); - $this->assertSame($this->testFileData, file_get_contents('public://foobar/example-✓.txt')); + $this->assertSame($this->testFileData, file_get_contents('public://foobar/Èxample-✓.txt')); } /**