diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Uploader.php b/app/code/Magento/CatalogImportExport/Model/Import/Uploader.php index 6ae553b028a98..7d63448487e6b 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Uploader.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Uploader.php @@ -161,6 +161,15 @@ public function move($fileName, $renameFileOff = false) $read = $this->_readFactory->create($url, DriverPool::HTTPS); } + //only use filename (for URI with query parameters) + $parsedUrl = parse_url($url); + if ($parsedUrl['path']) { + $urlPathValues = explode('/', $parsedUrl['path']); + if (!empty($urlPathValues)) { + $fileName = end($urlPathValues); + } + } + $fileName = preg_replace('/[^a-z0-9\._-]+/i', '', $fileName); $this->_directory->writeFile( $this->_directory->getRelativePath($this->getTmpDir() . '/' . $fileName), diff --git a/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/UploaderTest.php b/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/UploaderTest.php index e28c2e1f3c01d..f6a211bc47c62 100644 --- a/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/UploaderTest.php +++ b/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/UploaderTest.php @@ -217,12 +217,32 @@ public function moveFileUrlDataProvider() [ '$fileUrl' => 'http://test_uploader_file', '$expectedHost' => 'test_uploader_file', - '$expectedFileName' => 'httptest_uploader_file', + '$expectedFileName' => 'test_uploader_file', ], [ '$fileUrl' => 'https://!:^&`;file', '$expectedHost' => '!:^&`;file', - '$expectedFileName' => 'httpsfile', + '$expectedFileName' => 'file', + ], + [ + '$fileUrl' => 'https://www.google.com/image.jpg', + '$expectedHost' => 'www.google.com/image.jpg', + '$expectedFileName' => 'image.jpg', + ], + [ + '$fileUrl' => 'https://www.google.com/image.jpg?param=1', + '$expectedHost' => 'www.google.com/image.jpg?param=1', + '$expectedFileName' => 'image.jpg', + ], + [ + '$fileUrl' => 'https://www.google.com/image.jpg?param=1¶m=2', + '$expectedHost' => 'www.google.com/image.jpg?param=1¶m=2', + '$expectedFileName' => 'image.jpg', + ], + [ + '$fileUrl' => 'http://www.google.com/image.jpg?param=1¶m=2', + '$expectedHost' => 'www.google.com/image.jpg?param=1¶m=2', + '$expectedFileName' => 'image.jpg', ], ]; }