Fix issue where URLs generated by the ImageResizer were not correctly encoded.

Related https://github.com/laravel/framework/issues/34199
This commit is contained in:
Luke Towers 2020-09-08 16:04:40 -06:00
parent ce47c0248f
commit 2c4d3c9f98
3 changed files with 19 additions and 1 deletions

View File

@ -500,7 +500,10 @@ class ImageResizer
$url = $resizedDisk->url($this->getPathToResizedImage());
}
return $url;
// Ensure that a properly encoded URL is returned
$segments = explode('/', $url);
$lastSegment = array_pop($segments);
return implode('/', $segments) . '/' . rawurlencode(rawurldecode($lastSegment));
}
/**

BIN
tests/fixtures/media/october space.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -320,6 +320,21 @@ class ImageResizerTest extends PluginTestCase
);
}
public function testSpaceInFilename()
{
// Media URL with space
$this->setUpStorage();
$this->copyMedia();
$imageResizer = new ImageResizer(
URL::to(MediaLibrary::url('october space.png')),
100,
100
);
$this->assertStringContainsString('october%20space', $imageResizer->getResizedUrl(), 'Resized URLs are not properly URL encoded');
}
protected function setUpStorage()
{
$this->app->useStoragePath(base_path('storage/temp'));