Magento多文件上传代码功能实现

前言

在Magento中上传单个文件很简单,可以直接在继承的Mage_Adminhtml_Block_Widget_Form类中直接添加如下组件Field:
对于图片:

$fieldset->addField('test_pic', 'image', array(
    'label' => "标签",
    'name' => 'test_pic',
));

对于文件:

$fieldset->addField('test_file', 'file', array(
     'label' => "标签",
     'name' => 'test_file',
 ));

处理时只需在对应后台的控制器action中使用Varien_File_Uploader工具类来进行获取。
但这个组件只能处理单文件上传,那么对于多文件上传该怎么做呢?通过观察原Magento功能可知,只有在商品的编辑或创建时,有一个上传多图片的功能(见下图),该功能实现的就是多文件上传!
Magento商品图片多文件上传
于是我尝试阅读并理解它的原代码,知道了原来在Magento中处理多文件上传使用的是一个叫Flex Uploader的Flash插件实现的,并且对应的Magento系统给了一个封装好的Block类进行处理:Mage_Adminhtml_Block_Media_Uploader,下面就个人所实现的一个多文件上传插件来谈谈具体实现步骤。

1.首先,实现Block类

在实现多文件上传时,需要先实现前台HTML页面,这里通过自定一个Block类来包含Flex Uploader组件来实现,这个类可以继承普通的后台Block类:Mage_Adminhtml_Block_Widget,如下在其重置的_prepareLayout方法中添加Mage_Adminhtml_Block_Media_Uploader子块Block:

protected function _prepareLayout() {
    // 添加Mage_Adminhtml_Block_Media_Uploader子块Block
    $this->setChild('uploader', $this->getLayout()->createBlock('adminhtml/media_uploader'));

    $this->getChild('uploader')->getConfig()
            // 文件上传处理action
            ->setUrl(Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/material/upload'))
            ->setFileField('material_files')
            ->setFilters(array(
                'all' => array(
                    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值