Upload.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. declare(strict_types=1);
  8. namespace Magento\Cms\Controller\Adminhtml\Wysiwyg\Images;
  9. use Magento\Framework\App\Action\HttpPostActionInterface;
  10. use Magento\Framework\App\Filesystem\DirectoryList;
  11. /**
  12. * Upload image.
  13. */
  14. class Upload extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images implements HttpPostActionInterface
  15. {
  16. /**
  17. * @var \Magento\Framework\Controller\Result\JsonFactory
  18. */
  19. protected $resultJsonFactory;
  20. /**
  21. * @var \Magento\Framework\App\Filesystem\DirectoryResolver
  22. */
  23. private $directoryResolver;
  24. /**
  25. * @param \Magento\Backend\App\Action\Context $context
  26. * @param \Magento\Framework\Registry $coreRegistry
  27. * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
  28. * @param \Magento\Framework\App\Filesystem\DirectoryResolver|null $directoryResolver
  29. */
  30. public function __construct(
  31. \Magento\Backend\App\Action\Context $context,
  32. \Magento\Framework\Registry $coreRegistry,
  33. \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory,
  34. \Magento\Framework\App\Filesystem\DirectoryResolver $directoryResolver = null
  35. ) {
  36. parent::__construct($context, $coreRegistry);
  37. $this->resultJsonFactory = $resultJsonFactory;
  38. $this->directoryResolver = $directoryResolver
  39. ?: $this->_objectManager->get(\Magento\Framework\App\Filesystem\DirectoryResolver::class);
  40. }
  41. /**
  42. * Files upload processing.
  43. *
  44. * @return \Magento\Framework\Controller\ResultInterface
  45. * @throws \Magento\Framework\Exception\LocalizedException
  46. */
  47. public function execute()
  48. {
  49. try {
  50. $this->_initAction();
  51. $path = $this->getStorage()->getSession()->getCurrentPath();
  52. if (!$this->directoryResolver->validatePath($path, DirectoryList::MEDIA)) {
  53. throw new \Magento\Framework\Exception\LocalizedException(
  54. __('Directory %1 is not under storage root path.', $path)
  55. );
  56. }
  57. $uploaded = $this->getStorage()->uploadFile($path, $this->getRequest()->getParam('type'));
  58. $response = [
  59. 'name' => $uploaded['name'],
  60. 'type' => $uploaded['type'],
  61. 'error' => $uploaded['error'],
  62. 'size' => $uploaded['size'],
  63. 'file' => $uploaded['file']
  64. ];
  65. } catch (\Exception $e) {
  66. $response = ['error' => $e->getMessage(), 'errorcode' => $e->getCode()];
  67. }
  68. /** @var \Magento\Framework\Controller\Result\Json $resultJson */
  69. $resultJson = $this->resultJsonFactory->create();
  70. return $resultJson->setData($response);
  71. }
  72. }