2014-03-24 72 views
3

这个问题是关系到我以前的question,我会创造使用模板文件管理选项卡形式。模板文件的内容为:上传多个文件Varien_File_Uploader

<div class="entry-edit"> 
    <div class="entry-edit-head"> 
     <h4 class="icon-head head-edit-form fieldset-legend">Images</h4> 
    </div> 
    <div class="fieldset"> 
     <div class="hor-scroll"> 
      <table class="form-list container"> 
       <tr class="wrapper-tr"> 
        <td class="value"> 
         <input type="file" name="images[]"/> 
        </td> 
        <td class="label"> 
         <span class="remove">Remove</span> 
        </td> 
       </tr> 
      </table> 
      <input type="button" class="add" value="Add Image"/> 
     </div> 
    </div> 
</div> 

<script> 
    jQuery(document).ready(function() { 
     jQuery('.add').click(function() { 
      var wrapper = "<tr class='wrapper-tr'>" + 
        "<td class='value'><input type='file' name='images[]'></td>" + 
        "<td class='label'><span class='remove'>Remove</span></td>" + 
        "</tr>"; 
      jQuery(wrapper).find('.remove').on('click', function() { 
       jQuery(this).parent('.wrapper-tr').remove(); 
      }); 
      jQuery(wrapper).appendTo('.container'); 
     }); 
     jQuery('.container').on('click', 'span.remove', function() { 
      if (jQuery('.wrapper-tr').length > 1) { 
       jQuery(this).parents('.wrapper-tr').remove(); 
      } else { 
       alert('at least one image need to be selected'); 
      } 
     }); 
    }); 
</script> 

用于上传多个文件。

但正如我输入类型名称为images[],这就是为什么在我的控制器的saveAction()我无法用Varien_File_Uploader为上传文件:

$uploader = new Varien_File_Uploader('images'); 

我应该在Varien_File_Uploader构造函数传递以什么样的价值是能够上传文件?

更新
我试图记录和发现这样的警告:

警告:file_exists()预计参数1是一个有效的路径,在/ var/WWW/mageqb/LIB /瓦瑞恩数组给定/File/Uploader.php上线150

在我的控制器的代码是:

foreach ($_FILES['images']['name'] as $key => $image) { 
    Mage::log('looping'); 
    if (empty($image)) { 
     Mage::log('continue'); 
     continue; 
    } 
    try { 
     Mage::log('uploading'); 
     /* Starting upload */ 
     $uploader = new Varien_File_Uploader('images'); 

     // Any extention would work 
     $uploader->setAllowedExtensions(array('jpg', 'jpeg', 'gif', 'png')); 
     $uploader->setAllowRenameFiles(true); 

     // Set the file upload mode 
     // false -> get the file directly in the specified folder 
     // true -> get the file in the product like folders 
     // (file.jpg will go in something like /media/f/i/file.jpg) 
     $uploader->setFilesDispersion(false); 

     // We set media as the upload dir 
     $path = Mage::getBaseDir('media') . DS . 'authors' . DS; 
     $img = $uploader->save($path, $_FILES['images']['name'][$key]); 
     Mage::log($img['file']); 
    } catch (Exception $e) { 
     echo $e->getMessage(); 
     Mage::log($e->getMessage()); 
    } 
} 

回答

12

这是预期代码

$uploader = new Varien_File_Uploader(
     array(
    'name' => $_FILES['images']['name'][$key], 
    'type' => $_FILES['images']['type'][$key], 
    'tmp_name' => $_FILES['images']['tmp_name'][$key], 
    'error' => $_FILES['images']['error'][$key], 
    'size' => $_FILES['images']['size'][$key] 
     ) 
); 
+0

感谢它帮了很大忙。 – ravisoni

+0

Varien_File_Uploader有什么用处 – Sri

+0

@Sri:你怎么看? –