16 class Image extends \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend
49 private $imageUploader;
54 private $additionalData =
'_additional_data_';
62 \Psr\Log\LoggerInterface
$logger,
64 \
Magento\MediaStorage\Model\File\UploaderFactory $fileUploaderFactory
67 $this->_fileUploaderFactory = $fileUploaderFactory;
78 private function getUploadedImageName(
$value)
98 $value = $object->getData($attributeName);
100 if ($this->fileResidesOutsideCategoryDir(
$value)) {
105 if ($imageName = $this->getUploadedImageName(
$value)) {
106 $object->setData($this->additionalData . $attributeName,
$value);
107 $object->setData($attributeName, $imageName);
109 $object->setData($attributeName,
null);
112 return parent::beforeSave($object);
120 private function getImageUploader()
122 if ($this->imageUploader ===
null) {
124 ->get(\
Magento\Catalog\CategoryImageUpload::class);
127 return $this->imageUploader;
136 private function isTmpFileAvailable(
$value)
138 return is_array(
$value) && isset(
$value[0][
'tmp_name']);
147 private function fileResidesOutsideCategoryDir(
$value)
153 $fileUrl = ltrim(
$value[0][
'url'],
'/');
156 $usingPathRelativeToBase = strpos($fileUrl, $baseMediaDir) === 0;
158 return $usingPathRelativeToBase;
171 if ($this->isTmpFileAvailable(
$value) && $imageName = $this->getUploadedImageName(
$value)) {
173 $this->getImageUploader()->moveFileFromTmp($imageName);
174 }
catch (\Exception $e) {
175 $this->_logger->critical($e);
elseif(isset( $params[ 'redirect_parent']))
__construct(\Psr\Log\LoggerInterface $logger, \Magento\Framework\Filesystem $filesystem, \Magento\MediaStorage\Model\File\UploaderFactory $fileUploaderFactory)