Это в моей пользовательской форме, основанной на 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());
}