Image 图像不';t在自定义模块magento中上载

Image 图像不';t在自定义模块magento中上载,image,magento,upload,Image,Magento,Upload,我已经在magento中创建了具有图像上载属性的自定义模块。图像名称已成功存储在DB表中。但图像不会上载到目标文件夹 我已尝试使用以下代码。请告诉我“我做错了什么” 上周我为我的Magento应用程序添加了文件上传选项。下面是代码。这可能对你有帮助。这是控制器的保存操作 public function saveAction() { $filedata = array(); $uploadedFile = 'uploaded_file'; $_helper = Mage::

我已经在magento中创建了具有图像上载属性的自定义模块。图像名称已成功存储在DB表中。但图像不会上载到目标文件夹

我已尝试使用以下代码。请告诉我“我做错了什么”


上周我为我的Magento应用程序添加了文件上传选项。下面是代码。这可能对你有帮助。这是控制器的保存操作

public function saveAction() {
    $filedata = array();
    $uploadedFile = 'uploaded_file';
    $_helper = Mage::helper('fileuploader');
    if (!empty($_FILES[$uploadedFile]['name'])) {
        try {
            $ext = $_helper->getFileExtension($_FILES[$uploadedFile]['name']);
            $fname = 'File-' . time() . $ext;
            $uploader = new Varien_File_Uploader($uploadedFile);
            #$uploader->setAllowedExtensions(array("txt", "csv", "htm", "html", "xml", "css", "doc", "docx", "xls", "xlsx", "rtf", "ppt", "pdf", "swf", "flv", "avi", "wmv", "mov", "wav", "mp3", "jpg", "jpeg", "gif", "png","zip"));

        $uploader->setAllowRenameFiles(true);
        $uploader->setFilesDispersion(false);

        $path = Mage::getBaseDir('media') . DS . 'custom' . DS . 'upload' . DS;

        $uploader->save($path, $fname);

        $filedata[$uploadedFile] = 'custom/upload/' . $fname;
    } catch (Exception $e) {
        Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
        $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
        return;
    }
}

if ($data = $this->getRequest()->getPost()) {
    $products = array();
    $availProductIds = Mage::getModel('fileuploader/fileuploader')->getAllAvailProductIds();
    parse_str($data['fileuploader_products'], $products);
    foreach ($products as $k => $v) {
        if (preg_match('/[^0-9]+/', $k) || preg_match('/[^0-9]+/', $v)) {
            unset($products[$k]);
        }
    }

    $productIds = array_intersect($availProductIds, $products);
    $data['product_ids'] = implode(',', $productIds);
    if (!empty($filedata[$uploadedFile])) {
        $data[$uploadedFile] = $filedata[$uploadedFile];
    } else {
        if (isset($data[$uploadedFile]['delete']) && $data[$uploadedFile]['delete'] == 1) {
            if ($data[$uploadedFile]['value'] != '')
                $this->removeFile($data[$uploadedFile]['value']);
            $data[$uploadedFile] = '';
        }else {
            unset($data[$uploadedFile]);
        }
    }
    $model = Mage::getModel('fileuploader/fileuploader');
    $model->setData($data)
            ->setId($this->getRequest()->getParam('id'));
    try {
        $model->save();
        Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('fileuploader')->__('Item was successfully saved'));
        Mage::getSingleton('adminhtml/session')->setFormData(false);

        if ($this->getRequest()->getParam('back')) {
            $this->_redirect('*/*/edit', array('id' => $model->getId()));
            return;
        }
        $this->_redirect('*/*/');
        return;
    } catch (Exception $e) {
        Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
        Mage::getSingleton('adminhtml/session')->setFormData($data);
        $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
        return;
    }
}


Mage::getSingleton('adminhtml/session')->addError(Mage::helper('fileuploader')->__('Unable to find item to save'));
$this->_redirect('*/*/');
}

通过grid.php中的addcolumn函数构建表单

$this->addColumn('uploaded_file', array(
            'header' => Mage::helper('fileuploader')->__('File'),
            'align' => 'left',
            'type' => 'file',
            'escape' => true,
            'sortable' => false,
            'index' => 'uploaded_file',
        ));
这是最重要的。别忘了在form.php文件中提到表单enctype应该是Multi/part。我想你错过了。请检查这个

protected function _prepareForm() {
        $form = new Varien_Data_Form(array(
                    'id' => 'edit_form',
                    'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
                    'method' => 'post',
                    'enctype' => 'multipart/form-data'
                        )
        );

就这样

上周我为我的Magento应用程序添加了文件上传选项。下面是代码。这可能对你有帮助。这是控制器的保存操作

public function saveAction() {
    $filedata = array();
    $uploadedFile = 'uploaded_file';
    $_helper = Mage::helper('fileuploader');
    if (!empty($_FILES[$uploadedFile]['name'])) {
        try {
            $ext = $_helper->getFileExtension($_FILES[$uploadedFile]['name']);
            $fname = 'File-' . time() . $ext;
            $uploader = new Varien_File_Uploader($uploadedFile);
            #$uploader->setAllowedExtensions(array("txt", "csv", "htm", "html", "xml", "css", "doc", "docx", "xls", "xlsx", "rtf", "ppt", "pdf", "swf", "flv", "avi", "wmv", "mov", "wav", "mp3", "jpg", "jpeg", "gif", "png","zip"));

        $uploader->setAllowRenameFiles(true);
        $uploader->setFilesDispersion(false);

        $path = Mage::getBaseDir('media') . DS . 'custom' . DS . 'upload' . DS;

        $uploader->save($path, $fname);

        $filedata[$uploadedFile] = 'custom/upload/' . $fname;
    } catch (Exception $e) {
        Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
        $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
        return;
    }
}

if ($data = $this->getRequest()->getPost()) {
    $products = array();
    $availProductIds = Mage::getModel('fileuploader/fileuploader')->getAllAvailProductIds();
    parse_str($data['fileuploader_products'], $products);
    foreach ($products as $k => $v) {
        if (preg_match('/[^0-9]+/', $k) || preg_match('/[^0-9]+/', $v)) {
            unset($products[$k]);
        }
    }

    $productIds = array_intersect($availProductIds, $products);
    $data['product_ids'] = implode(',', $productIds);
    if (!empty($filedata[$uploadedFile])) {
        $data[$uploadedFile] = $filedata[$uploadedFile];
    } else {
        if (isset($data[$uploadedFile]['delete']) && $data[$uploadedFile]['delete'] == 1) {
            if ($data[$uploadedFile]['value'] != '')
                $this->removeFile($data[$uploadedFile]['value']);
            $data[$uploadedFile] = '';
        }else {
            unset($data[$uploadedFile]);
        }
    }
    $model = Mage::getModel('fileuploader/fileuploader');
    $model->setData($data)
            ->setId($this->getRequest()->getParam('id'));
    try {
        $model->save();
        Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('fileuploader')->__('Item was successfully saved'));
        Mage::getSingleton('adminhtml/session')->setFormData(false);

        if ($this->getRequest()->getParam('back')) {
            $this->_redirect('*/*/edit', array('id' => $model->getId()));
            return;
        }
        $this->_redirect('*/*/');
        return;
    } catch (Exception $e) {
        Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
        Mage::getSingleton('adminhtml/session')->setFormData($data);
        $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
        return;
    }
}


Mage::getSingleton('adminhtml/session')->addError(Mage::helper('fileuploader')->__('Unable to find item to save'));
$this->_redirect('*/*/');
}

通过grid.php中的addcolumn函数构建表单

$this->addColumn('uploaded_file', array(
            'header' => Mage::helper('fileuploader')->__('File'),
            'align' => 'left',
            'type' => 'file',
            'escape' => true,
            'sortable' => false,
            'index' => 'uploaded_file',
        ));
这是最重要的。别忘了在form.php文件中提到表单enctype应该是Multi/part。我想你错过了。请检查这个

protected function _prepareForm() {
        $form = new Varien_Data_Form(array(
                    'id' => 'edit_form',
                    'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
                    'method' => 'post',
                    'enctype' => 'multipart/form-data'
                        )
        );


就这样

嗨,Elavarasan,我似乎不知道我所做的是什么错了,或者我是否真的做了什么。我使用了您建议的magento模块创建者,然后在helper/data.php下添加了上面提供的所有代码。什么也没发生。感谢您的帮助,因为我是马根托的新手。

嗨,埃拉瓦拉桑,我似乎不知道我所做的有什么错,或者我是否真的做了什么。我使用了您建议的magento模块创建者,然后在helper/data.php下添加了上面提供的所有代码。什么也没发生。感谢您的帮助,因为我是马根托的新手。

很抱歉这么说。在“$path=Mage::getBaseDir('media').DS.”自定义“.DS.”上传“.DS;”中,DS是什么意思?谢谢。当我在$form中添加“'enctype'=>'multipart/form data'”时,它可以正常工作。我认为您不熟悉magento模块。点击这个链接。在这里,您可以构建所有类型的模块。构建完成后,您可以下载模块并参考其工作原理的源代码。。非常感谢你。给定的链接真的很好。现在我又面临一个问题。现在该图像没有保存到DB,但图像已成功上载。请参考我上面提到的保存操作。还可以使用模块创建者创建一些虚拟模块,并检查这些模块是如何工作的。。!!很抱歉这么说。在“$path=Mage::getBaseDir('media').DS.”自定义“.DS.”上传“.DS;”中,DS是什么意思?谢谢。当我在$form中添加“'enctype'=>'multipart/form data'”时,它可以正常工作。我认为您不熟悉magento模块。点击这个链接。在这里,您可以构建所有类型的模块。构建完成后,您可以下载模块并参考其工作原理的源代码。。非常感谢你。给定的链接真的很好。现在我又面临一个问题。现在该图像没有保存到DB,但图像已成功上载。请参考我上面提到的保存操作。还可以使用模块创建者创建一些虚拟模块,并检查这些模块是如何工作的。。!!您是否有任何错误或不知道如何在管理表单中添加图像字段?参考这篇文章,我希望它能对你有所帮助。老实说,我不知道如何在“管理”下的“管理产品”中添加“图像”字段。我想有缩略图,大小图像上传。搞不清楚从哪里开始。我最近设置了我的模块->local/Von/Configs/etc/config.xml和etc/modules/Von_Configs.xml。您能告诉我如何实现Elavarasan共享的上述代码吗?要访问的位置和文件夹?我使用的是企业版。谢谢你给我的邮件。我似乎找不到/app/code/local/Chilly/ModName/Block/Adminhtml/ModName/Edit/Form.phpy你可以看看上面的博文。我已经完全解释了如何将图像字段添加到管理表单中。那么在模块中的何处创建表单?您是否有任何错误,或者不知道如何在管理表单中添加图像字段?参考这篇文章,我希望它能对你有所帮助。老实说,我不知道如何在“管理”下的“管理产品”中添加“图像”字段。我想有缩略图,大小图像上传。搞不清楚从哪里开始。我最近设置了我的模块->local/Von/Configs/etc/config.xml和etc/modules/Von_Configs.xml。您能告诉我如何实现Elavarasan共享的上述代码吗?要访问的位置和文件夹?我使用的是企业版。谢谢你给我的邮件。我似乎找不到/app/code/local/Chilly/ModName/Block/Adminhtml/ModName/Edit/Form.phpy你可以看看上面的博文。我已经解释了如何将图像字段完全添加到管理表单中。那么在模块中的何处创建表单呢?