Magento管理员文件上传未保存文件和路径

时间:2015-11-23 02:40:32

标签: php mysql magento

关于magento admin grid的研究的延续。我正在尝试创建文件上传。保存过程已完成,无错误,并在数据库中添加了表格行。

问题:

文件路径未保存在数据库中。

未创建目录路径,当然没有文件上传到服务器。

注意:该过程已完成,网格和数据库中还有其他表格行。

我只是引用此链接Magento image upload form field

问题:

  1. 如何为上传的文件创建目录文件夹?

  2. 如何在数据库表中保存路径?

  3. 是否有要在config.xml中添加的代码?

  4. 更新

    最后我解决了文件上传问题。 感谢@PHP Weblineindia指导我。 这是我更新的控制器。

    public function saveAction() {
        $post_data=$this->getRequest()->getPost();
    
        if ($post_data) {
            try {                
         //save file to the destination folder   
                if (isset($_FILES)){
                    if ($_FILES['file_path']['name']) {
    
                        $path = Mage::getBaseDir('media') . DS . 'rts' . DS .'pmadmin'.DS;
                        $uploader = new Varien_File_Uploader('file_path');
                        $uploader->setAllowedExtensions(array('PDF','pdf'));
                        $uploader->setAllowRenameFiles(false);
                        $uploader->setFilesDispersion(false);
                        $destFile = $path.$_FILES['file_path']['name'];
                        $filename = $uploader->getNewFileName($destFile);
                        $uploader->save($path, $filename);
    
                        $post_data['file_path']='rts/pmadmin/'.$filename;
                    }
                }
        //save file path to the database
                $model = Mage::getModel("pmadmin/pmadmin")
                ->addData($post_data)
                ->setId($this->getRequest()->getParam("id"))
                ->save();
    
                Mage::getSingleton("adminhtml/session")->addSuccess(Mage::helper("adminhtml")->__("File was successfully saved"));
                Mage::getSingleton("adminhtml/session")->setPmadminData(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")->setPmadminData($this->getRequest()->getPost());
                $this->_redirect("*/*/edit", array("id" => $this->getRequest()->getParam("id")));
            return;
            }
    
        }
        $this->_redirect("*/*/");
    }
    

    这是我的表格。

    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'
                )
        );
    
        $form->setUseContainer(true);
        $this->setForm($form);
        return parent::_prepareForm();
    }
    

    路径应保存在表的file_path列中,文件应上传到media / pmadmin目录中。

    谢谢!

1 个答案:

答案 0 :(得分:0)

@Rodge你试图使用下面的帖子数据获取文件数据

$postData = $this->getRequest()->getPost();
$postData['pmadmin_file'];

并且您希望上传文件类型,因此文件类型不属于帖子。

尝试以下方法获取文件数据。

$file_name=$_FILES['pmadmin_file']['name'];

并测试您在saveAction()方法中获取文件名,之后您可以存储文件数据。在目录中。

在你的控制器文件中你有保存数据,如

如果(isset($ imgFilename))

    $newsModel->setImage($imgFilename);

                $newsModel->setId($this->getRequest()->getParam('id'))
                    ->setTitle($postData['title'])
                    ->setShort_description($postData['short_description'])
                    ->setCustomer_group_id($postData['customer_group_id'])
                    ->setIs_active($postData['is_active'])
                    ->setValue($postData['value'])
                ->save(); 

尝试保存数据,如

if(isset($ imgFilename)){

        $newsModel->setId($this->getRequest()->getParam('id'))
            ->setTitle($postData['title'])
            ->setFilePath($imgFilename)
            ->setShortDescription($postData['short_description'])
            ->setCustomerGroupId($postData['customer_group_id'])
            ->setIsActive($postData['is_active'])
            ->setValue($postData['value'])
            ->save(); 

}