如何从magento的前端上传图像?

时间:2015-01-10 06:02:46

标签: magento module

我正在尝试从我的自定义模块中的前端上传单个图像。这是我在test / template / test.phtml中的表单

<form action="<?php echo Mage::getUrl('text/index/save') ?>" method="post" enctype="multipart/form-data">
<label for="sb_link">Image</label>
<input type="file" id="bs_image" name="bs_image" required="true"/>
<input type="submit" value="Submit" />

这是我的控制器,我在媒体文件夹中上传图像并在数据库中保存名称。

<?php

public function saveAction() {
    echo $path = Mage::getBaseDir() . '/test';
    if (!file_exists($path)) {
        mkdir($path, 777, true);
    }
    try {
        $fname = $_FILES['test']['name'];
        $uploader = new Varien_File_Uploader('test');
        $uploader->setAllowedExtensions(array('png', 'gif', 'jpeg', 'docx'));
        $uploader->setAllowCreateFolders(true);
        $uploader->setAllowRenameFiles(false);
        $uploader->setFilesDispersion(false);
        $uploader->save($path, $fname);
    } catch (Exception $e) {
        echo 'Error Message: ' . $e->getMessage();
    }


    $contact = Mage::getModel('test/test');
    $contact->setData('bs_image', $bs_image);
    $contact->save();

    $this->_redirectReferer();
}

我收到此错误。错误消息:文件未上传。 谢谢

2 个答案:

答案 0 :(得分:4)

我检查了你的代码。在表单中,您将图像字段的名称用作 bs_image 。但在控制器中,您可以将帖子文件作为 $ _ FILES [&#39; test&#39;] [&#39; name&#39;]; 。将其更改为 $ _ FILES [&#39; bs_image&#39;] [&#39; name&#39;];

答案 1 :(得分:0)

确保已将结束表单标记放入文件中。 您需要像这样访问文件名  $ fname = $ _FILES ['bs_image'] ['name'];