2010-09-02 88 views
9

我正在开发一个模块,同时具有前端和后端。到现在为止一切都好,但现在我想在后端上传图片。我不知道该如何开始,而我所尝试过的一切都让我头痛。Magento模块上传管理图像

感谢

回答

10

后研究了几天,这里是一个易于使用的例子如何在Magento的 How to create an image or video uploader for the Magento Admin Panel上传文件

Bassically,我们需要将'enctype' => 'multipart/form-data'添加到我们的形式

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

file类型的字段添加到我们的字段集

$fieldset->addField('fileinputname', 'file', array(
    'label'  => 'File label', 
    'required' => false, 
    'name'  => 'fileinputname', 
)); 

并将其保存在我们的控制器

if(isset($_FILES['fileinputname']['name']) and (file_exists($_FILES['fileinputname']['tmp_name']))) { 
    try { 
    $uploader = new Varien_File_Uploader('fileinputname'); 
    $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); 

    $uploader->setAllowRenameFiles(false); 

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

    $uploader->save($path, $_FILES['fileinputname']['name']); 

    $data['fileinputname'] = $_FILES['fileinputname']['name']; 
    }catch(Exception $e) { 

    } 
} 
+0

只是美好的,拯救了我的一天 – Yaroslav 2012-11-15 15:34:23

+0

要么我在那个上做错了什么,要么它不适用于1.4。 – Mike 2013-05-17 17:20:51

+0

这是在1.9上进行测试的,但是你可以试试用1.6发布的CE。 – 2013-07-29 13:00:34

5

这需要进入你的模块的etc/system.xml文件:

<?xml version="1.0"?> 
<config> 
    <sections> 
     <imagesection> <!-- Make up a section key (configuration sidebar) --> 
      <!-- ... --> 
      <groups> 
       <imagegroup> <!-- Make up a group key (the part you can expand/collapse) --> 
        <!-- ... --> 
        <fields> 
         <imagefield> <!-- Make up a field key --> 
          <label>Field Name</label> 
          <frontend_type>image</frontend_type> 
          <backend_model>adminhtml/system_config_backend_image</backend_model> 
          <upload_dir config="system/filesystem/media" scope_info="1">uploaddir</upload_dir> <!-- would upload into media/uploaddir --> 
          <base_url type="media" scope_info="1">uploaddir</base_url> <!-- same as previous line --> 
          <sort_order>10</sort_order> 
          <show_in_default>1</show_in_default> 
          <show_in_website>1</show_in_website> 
          <show_in_store>1</show_in_store> 
         </imagefield> 
+0

我们如何可以调整与上面的代码的形象? – liyakat 2013-08-22 13:01:49

+0

这个问题太旧了,我甚至都不记得这段代码是干什么的。我建议你创建一个新的问题。 – mattalxndr 2013-08-22 13:20:41

+0

你忘了编码? :( – liyakat 2013-08-23 04:04:19