Ошибка загрузки изображения в пользовательский модуль Magento 2.Файл не был загружен - PullRequest
0 голосов
/ 08 февраля 2019

Это в моей пользовательской форме, основанной на magento-contact .Magento версия 2.3.Проблема в том, что файлы успешно загружаются .

В \ Magento \ Framework \ File \ Uploader constuct функция, которую мы видим:

if (!file_exists($this->_file['tmp_name'])) {
            $code = empty($this->_file['tmp_name']) ? self::TMP_NAME_EMPTY : 0;
            throw new \Exception('The file was not uploaded.', $code);
        }

Затем в функции save :

try {
            $this->_result = $this->_moveFile($this->_file['tmp_name'], $destinationFile);
        } catch (\Exception $e) {
            // if the file exists and we had an exception continue anyway
            if (file_exists($destinationFile)) {
                $this->_result = true;
            } else {
                throw $e;
            }
        }

Сохранение функции выполняется после построения, как и должно быть.И файлы загружаются и перемещаются в 'requestForm / photo' успешно .Но тогда конструирование пермесит еще раз.Вот почему уже нет tmp файла .Так что моя попытка не удалась, и я получаю сообщение об ошибке " Файл не был загружен " после того, как моя форма запроса отправлена.Но я не понимаю почему.Есть идеи?

Exception.log:

main.CRITICAL: The file was not uploaded. {"exception":"[object] (Exception(code: 0): The file was not uploaded. at /vendor/magento/framework/File/Uploader.php:175)"} []

Вот часть загрузки изображения с моего контроллера:

        try{
            $uploaderFactory = $this->uploaderFactory->create(['fileId' => 'image']);
            $uploaderFactory->setAllowedExtensions(['jpg', 'jpeg', 'png']);
            $imageAdapter = $this->adapterFactory->create();
            $uploaderFactory->addValidateCallback('custom_image_upload',$imageAdapter,'validateUploadFile');
            $uploaderFactory->setAllowRenameFiles(true);
            $uploaderFactory->setFilesDispersion(true);
            $mediaDirectory = $this->filesystem->getDirectoryRead(DirectoryList::MEDIA);
            $destinationPath = $mediaDirectory->getAbsolutePath('requestForm/photo');
            $result = $uploaderFactory->save($destinationPath);
            if (!$result) {
                    throw new LocalizedException(
                            __('File cannot be saved to path: $1', $destinationPath)
                    );
            }
            $imagePath = 'requestForm/photo'.$result['file'];
            $data['photo'] = $imagePath;
        } catch (\Exception $e) {
            $this->messageManager->addError($e->getMessage());
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...