php - Magento admin 文件上传不保存文件和路径

标签 php mysql magento

只是我对 magento 管理网格研究的继续。我正在尝试创建文件上传。保存过程已完成,没有错误,并且在数据库中添加了一个表行。

问题:

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

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

注意:该过程是通过网格和数据库中的附加表行完成的。

我只是从这个链接引用Magento image upload form field

问题:

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

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

  3. config.xml中是否需要添加代码?

更新

终于解决了文件上传问题。 感谢@PHP Weblineindia 指导我。 这是我更新后的 Controller 。

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 目录中。

谢谢!

最佳答案

@Rodge 您正在尝试使用如下所示的发布数据来获取文件数据

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

并且您想要上传文件类型,因此文件类型不是帖子的一部分。

尝试如下获取文件数据。

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

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

在您的 Controller 文件中,您保存了诸如

之类的数据

if(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(); 

}

关于php - Magento admin 文件上传不保存文件和路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33862962/

相关文章:

php - while 循环期间损坏的 PDO 插入

php - 检查 ZIP 存档中内容的文件大小

javascript - 在哪里/如何添加自定义 js magento

php - PDO 模拟关闭,多次绑定(bind)相同的值

mysql - SQL - 连接表

mysql - 创建 NamedTuple 数组时输入 Mismatch Crystal

java - 如何指定JPA连接列名称?

magento - 获取magento中自定义输入的值

php - 登录成功后magento 404

javascript - 将多个输入价格合并为一个 TOTAL