![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-catalog/Controller/Adminhtml/Product/Gallery/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Catalog\Controller\Adminhtml\Product\Gallery; use Magento\Framework\App\Action\HttpPostActionInterface as HttpPostActionInterface; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\App\ObjectManager; use Magento\Framework\Exception\LocalizedException; /** * The product gallery upload controller */ class Upload extends \Magento\Backend\App\Action implements HttpPostActionInterface { /** * Authorization level of a basic admin session * * @see _isAllowed() */ public const ADMIN_RESOURCE = 'Magento_Catalog::products'; /** * @var \Magento\Framework\Controller\Result\RawFactory */ protected $resultRawFactory; /** * @var array */ private $allowedMimeTypes = [ 'jpg' => 'image/jpg', 'jpeg' => 'image/jpeg', 'gif' => 'image/png', 'png' => 'image/gif' ]; /** * @var \Magento\Framework\Image\AdapterFactory */ private $adapterFactory; /** * @var \Magento\Framework\Filesystem */ private $filesystem; /** * @var \Magento\Catalog\Model\Product\Media\Config */ private $productMediaConfig; /** * @param \Magento\Backend\App\Action\Context $context * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory * @param \Magento\Framework\Image\AdapterFactory $adapterFactory * @param \Magento\Framework\Filesystem $filesystem * @param \Magento\Catalog\Model\Product\Media\Config $productMediaConfig */ public function __construct( \Magento\Backend\App\Action\Context $context, \Magento\Framework\Controller\Result\RawFactory $resultRawFactory, \Magento\Framework\Image\AdapterFactory $adapterFactory = null, \Magento\Framework\Filesystem $filesystem = null, \Magento\Catalog\Model\Product\Media\Config $productMediaConfig = null ) { parent::__construct($context); $this->resultRawFactory = $resultRawFactory; $this->adapterFactory = $adapterFactory ?: ObjectManager::getInstance() ->get(\Magento\Framework\Image\AdapterFactory::class); $this->filesystem = $filesystem ?: ObjectManager::getInstance() ->get(\Magento\Framework\Filesystem::class); $this->productMediaConfig = $productMediaConfig ?: ObjectManager::getInstance() ->get(\Magento\Catalog\Model\Product\Media\Config::class); } /** * Upload image(s) to the product gallery. * * @return \Magento\Framework\Controller\Result\Raw */ public function execute() { try { $uploader = $this->_objectManager->create( \Magento\MediaStorage\Model\File\Uploader::class, ['fileId' => 'image'] ); $uploader->setAllowedExtensions($this->getAllowedExtensions()); $imageAdapter = $this->adapterFactory->create(); $uploader->addValidateCallback('catalog_product_image', $imageAdapter, 'validateUploadFile'); $uploader->setAllowRenameFiles(true); $uploader->setFilesDispersion(true); $mediaDirectory = $this->filesystem->getDirectoryRead(DirectoryList::MEDIA); $result = $uploader->save( $mediaDirectory->getAbsolutePath($this->productMediaConfig->getBaseTmpMediaPath()) ); $this->_eventManager->dispatch( 'catalog_product_gallery_upload_image_after', ['result' => $result, 'action' => $this] ); if (is_array($result)) { unset($result['tmp_name']); unset($result['path']); $result['url'] = $this->productMediaConfig->getTmpMediaUrl($result['file']); $result['file'] = $result['file'] . '.tmp'; } else { $result = ['error' => 'Something went wrong while saving the file(s).']; } } catch (LocalizedException $e) { $result = ['error' => $e->getMessage(), 'errorcode' => $e->getCode()]; } catch (\Throwable $e) { $result = ['error' => 'Something went wrong while saving the file(s).', 'errorcode' => 0]; } /** @var \Magento\Framework\Controller\Result\Raw $response */ $response = $this->resultRawFactory->create(); $response->setHeader('Content-type', 'text/plain'); $response->setContents(json_encode($result)); return $response; } /** * Get the set of allowed file extensions. * * @return array */ private function getAllowedExtensions() { return array_keys($this->allowedMimeTypes); } }