12 use Magento\Customer\Model\FileUploaderFactory;
15 use Psr\Log\LoggerInterface;
29 private $fileUploaderFactory;
34 private $addressMetadataService;
49 FileUploaderFactory $fileUploaderFactory,
51 LoggerInterface $logger
53 $this->fileUploaderFactory = $fileUploaderFactory;
54 $this->addressMetadataService = $addressMetadataService;
56 parent::__construct($context);
66 throw new \Exception(
'$_FILES array is empty.');
70 $this->convertFilesArray();
73 $attributeMetadata = $this->addressMetadataService->getAttributeMetadata(
$attributeCode);
76 $fileUploader = $this->fileUploaderFactory->create([
77 'attributeMetadata' => $attributeMetadata,
82 $errors = $fileUploader->validate();
84 $errorMessage = implode(
'</br>',
$errors);
85 throw new LocalizedException(
__($errorMessage));
88 $result = $fileUploader->upload();
89 }
catch (LocalizedException $e) {
91 'error' => $e->getMessage(),
92 'errorcode' => $e->getCode(),
94 }
catch (\Exception $e) {
95 $this->logger->critical($e);
97 'error' =>
__(
'Something went wrong while saving file.'),
98 'errorcode' => $e->getCode(),
115 private function convertFilesArray()
117 foreach ($_FILES[
'address'] as $itemKey =>
$item) {
120 $_FILES[
'address'][$itemKey] = [
__construct(Context $context, FileUploaderFactory $fileUploaderFactory, AddressMetadataInterface $addressMetadataService, LoggerInterface $logger)