Skip to content

Commit 9a15e1f

Browse files
committed
making changes for Upload category image with same image name issue #17661
1 parent 18e509c commit 9a15e1f

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

app/code/Magento/Catalog/Model/Category/Attribute/Backend/Image.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,13 @@ private function fileResidesOutsideCategoryDir($value)
167167
public function afterSave($object)
168168
{
169169
$value = $object->getData($this->additionalData . $this->getAttribute()->getName());
170-
170+
171171
if ($this->isTmpFileAvailable($value) && $imageName = $this->getUploadedImageName($value)) {
172172
try {
173-
$this->getImageUploader()->moveFileFromTmp($imageName);
173+
$imageName = $this->getImageUploader()->moveFileFromTmp($imageName);
174+
$attributeName = $this->getAttribute()->getName();
175+
$object->setData($attributeName, $imageName);
176+
$this->getAttribute()->getEntity()->saveAttribute($object, $attributeName);
174177
} catch (\Exception $e) {
175178
$this->_logger->critical($e);
176179
}

app/code/Magento/Catalog/Model/ImageUploader.php

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -200,10 +200,21 @@ public function moveFileFromTmp($imageName)
200200
{
201201
$baseTmpPath = $this->getBaseTmpPath();
202202
$basePath = $this->getBasePath();
203-
203+
204204
$baseImagePath = $this->getFilePath($basePath, $imageName);
205205
$baseTmpImagePath = $this->getFilePath($baseTmpPath, $imageName);
206-
206+
207+
$destinationFileAbsolutePath = $this->mediaDirectory->getAbsolutePath($baseImagePath);
208+
$fileInfo = pathinfo($destinationFileAbsolutePath);
209+
if (file_exists($destinationFileAbsolutePath)) {
210+
$index = 1;
211+
$imageName = $fileInfo['filename'] . '.' . $fileInfo['extension'];
212+
while (file_exists($fileInfo['dirname'] . '/' . $imageName)) {
213+
$imageName = $fileInfo['filename'] . '_' . $index . '.' . $fileInfo['extension'];
214+
$index++;
215+
}
216+
$baseImagePath = $this->getFilePath($basePath, $imageName);
217+
}
207218
try {
208219
$this->coreFileStorageDatabase->copyFile(
209220
$baseTmpImagePath,
@@ -222,7 +233,7 @@ public function moveFileFromTmp($imageName)
222233
return $imageName;
223234
}
224235

225-
/**
236+
/**
226237
* Checking file for save and save it to tmp dir
227238
*
228239
* @param string $fileId
@@ -233,16 +244,16 @@ public function moveFileFromTmp($imageName)
233244
*/
234245
public function saveFileToTmpDir($fileId)
235246
{
236-
$baseTmpPath = $this->getBaseTmpPath();
247+
$baseTmpPath = $this->getBaseTmpPath();
237248

238249
/** @var \Magento\MediaStorage\Model\File\Uploader $uploader */
239250
$uploader = $this->uploaderFactory->create(['fileId' => $fileId]);
240251
$uploader->setAllowedExtensions($this->getAllowedExtensions());
241252
$uploader->setAllowRenameFiles(true);
242253
if (!$uploader->checkMimeType($this->allowedMimeTypes)) {
243254
throw new \Magento\Framework\Exception\LocalizedException(__('File validation failed.'));
244-
}
245-
$result = $uploader->save($this->mediaDirectory->getAbsolutePath($baseTmpPath));
255+
}
256+
$result = $uploader->save($this->mediaDirectory->getAbsolutePath($baseTmpPath));
246257
unset($result['path']);
247258

248259
if (!$result) {

0 commit comments

Comments
 (0)