微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

图片上传错误“创建对象时发生类型错误” Magento 2.4.1

如何解决图片上传错误“创建对象时发生类型错误” Magento 2.4.1

在我的自定义表单中,我有一个选项图片上传。没有图片上传表单提交没有任何错误。但是当我使用图片上传代码并提交我的表单时出现错误

创建对象时发生类型错误: MKF\CustomApplication\Controller\Index\Submit\Interceptor,参数 4 传递给 MKF\CustomApplication\Controller\Index\Submit::__construct() 必须实现接口 Magento\Framework\ObjectManagerInterface, 给定的 Magento\MediaStorage\Model\File\UploaderFactory 实例, 叫进来 C:\xampp\htdocs\magento_new\generated\code\MKF\CustomApplication\Controller\Index\Submit\Interceptor.PHP 第 14 行

代码控制器Submit.PHP

namespace MKF\CustomApplication\Controller\Index;

use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;
use MKF\CustomApplication\Model\FormModel;
use Magento\Framework\Controller\ResultFactory;
use Magento\Framework\App\Action\Action;


use Magento\Store\Model\StoreManagerInterface;
use Magento\Framework\App\Filesystem\DirectoryList;

class Submit extends Action
{
    protected $resultPageFactory;
    protected $FormModel;


    //file upload
    protected $_objectManager;
    protected $_storeManager;
    protected $_filesystem;
    protected $_fileUploaderFactory;

    public function __construct(
        Context $context,PageFactory $resultPageFactory,FormModel $FormModel,\Magento\Framework\ObjectManagerInterface $objectManager,StoreManagerInterface $storeManager,\Magento\Framework\Filesystem $filesystem,\Magento\MediaStorage\Model\File\UploaderFactory $fileUploaderFactory
    )
    {
        $this->resultPageFactory = $resultPageFactory;
        $this->FormModel = $FormModel;

        $this->_objectManager = $objectManager;
        $this->_storeManager = $storeManager;
        $this->_filesystem = $filesystem;
        $this->_fileUploaderFactory = $fileUploaderFactory;

        parent::__construct($context);
    }

    public function execute()
    {

        // print_r($this->getRequest()->getPost());

        // exit();

        try {
            $data = (array)$this->getRequest()->getPost();

            //print_r($data); exit();
            //print_r($file['owner_nid']['name']); exit();

            $this->UploadImages();


            if ($data) {
                $model = $this->FormModel;
                $model->setData($data);
                $model->setData('owner_nid',$file['owner_nid']['name']);
                $model->save();
                $this->messageManager->addSuccessMessage(__("Data Saved Successfully."));
            }
        } catch (\Exception $e) {
            $this->messageManager->addErrorMessage($e,__("We can\'t submit your request,Please try again."));
        }
        $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
        $resultRedirect->setUrl($this->_redirect->getRefererUrl());
        return $resultRedirect;

    }


    private function UploadImages(){

        $files = $this->getRequest()->getFiles();



        $mediaDir = $this->_filesystem->getDirectoryRead(DirectoryList::MEDIA)->getAbsolutePath();
        $mediapath = $this->_mediaBaseDirectory = rtrim($mediaDir,'/');


        if (isset($files['owner_nid']) && !empty($files['owner_nid']["name"])){
            try {
                $uploader = $this->_fileUploaderFactory->create(['fileId' => 'owner_nid']);
                $uploader->setAllowedExtensions(['jpg','jpeg','gif','png']);
                $uploader->setAlloWrenameFiles(true);
                $uploader->setFilesdispersion(true);
                $path = $mediapath . '/MKF/CustomApplication/';
                $result = $uploader->save($path);



                if (!$result) {
                    throw new LocalizedException(
                        __('File cannot be saved to path: $1',$path)
                    );
                }
                $imagePath = $path.$files['owner_nid']["name"];

            }
            catch (\Exception $e) {
                $this->messageManager->addError(__($e->getMessage()));
            }

            //print_r($data['owner_nid'] = $imagePath); exit();

            return $imagePath;
        }
    }
}

解决方法

建议切换到开发者模式,删除生成的文件夹

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。