resultJsonFactory = $resultJsonFactory; $this->directoryResolver = $directoryResolver ?: $this->_objectManager->get(\Magento\Framework\App\Filesystem\DirectoryResolver::class); } /** * Files upload processing. * * @return \Magento\Framework\Controller\ResultInterface * @throws \Magento\Framework\Exception\LocalizedException */ public function execute() { try { $this->_initAction(); $path = $this->getStorage()->getSession()->getCurrentPath(); if (!$this->directoryResolver->validatePath($path, DirectoryList::MEDIA)) { throw new \Magento\Framework\Exception\LocalizedException( __('Directory %1 is not under storage root path.', $path) ); } $uploaded = $this->getStorage()->uploadFile($path, $this->getRequest()->getParam('type')); $response = [ 'name' => $uploaded['name'], 'type' => $uploaded['type'], 'error' => $uploaded['error'], 'size' => $uploaded['size'], 'file' => $uploaded['file'] ]; } catch (\Exception $e) { $response = ['error' => $e->getMessage(), 'errorcode' => $e->getCode()]; } /** @var \Magento\Framework\Controller\Result\Json $resultJson */ $resultJson = $this->resultJsonFactory->create(); return $resultJson->setData($response); } }