1

I want to upload and save image using observer or model.
How can I do that?

$imageAdapter = $objectManager->get('Magento\Framework\Image\AdapterFactory')->create();

$uploader->addValidateCallback($po_file, $imageAdapter, 'validateUploadFile');
$uploader->setAllowRenameFiles(true);
$uploader->setFilesDispersion(true);

/** @var \Magento\Framework\Filesystem\Directory\Read $mediaDirectory */
$mediaDirectory = $objectManager->get('Magento\Framework\Filesystem')->getDirectoryRead(DirectoryList::MEDIA);
$result = $uploader->save($mediaDirectory->getAbsolutePath('customer/senapro'));
$a= $result['file'];
print_r($a);

this code not working

1 Answer 1

1

Assuming that you are uploading the image from a Form, you can save the image using a controller:

use Magento\Framework\App\Filesystem\DirectoryList;
use Magento\Backend\App\Action;

class Upload extends \Magento\Framework\App\Action\Action
{     
   protected $_fileUploaderFactory;

public function __construct(
        \Magento\MediaStorage\Model\File\UploaderFactory $fileUploaderFactory,
        Action\Context $context

    ) {

        $this->_fileUploaderFactory = $fileUploaderFactory;
        parent::__construct($context);
    }

    public function execute(){

        $uploader = $this->_fileUploaderFactory->create(['fileId' => 'image']);

        $uploader->setAllowedExtensions(['jpg', 'jpeg', 'gif', 'png']);

        $uploader->setAllowRenameFiles(false);

        $uploader->setFilesDispersion(false);

        $path = $this->_filesystem->getDirectoryRead(DirectoryList::MEDIA)

        ->getAbsolutePath('images/');

        $uploader->save($path);

    }
}

If you want to reuse the code, you can move this to a model and call it in your controller.

7
  • thanks for answer but i am using payment form so i cant create controller because its payment form guide me
    – imtiaz
    Mar 19, 2019 at 11:13
  • So must be must be submitting some form , you can use the code in that action or create a ajax image uploader Mar 19, 2019 at 11:18
  • ajax image uploader?
    – imtiaz
    Mar 19, 2019 at 11:18
  • Yes as soon as someone selects a image it is uploaded and saved against your quote , I am not sure what is your use case , why are you uploading image against a payment method so i can't suggest a optimal solution but above code works for image upload Mar 19, 2019 at 11:20
  • can you give any tutorial
    – imtiaz
    Mar 19, 2019 at 11:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.