2011-06-22 56 views
1

这是我的形式文件上传后的文件重命名的Zend

class Admin_Form_RoomtypeForm extends Zend_Form 
{ 
    public function init() 
    { 

     $name = new Zend_Form_Element_Text('name'); 
     $name->setLabel('Name :'); 

     $imagePath = '/home/dinuka/image'; 

     $image = new Zend_Form_Element_File('image'); 
     $image->setLabel('Image URL :'); 
     $image->setDestination($imagePath); 
     $image->addValidators(array(array('IsImage', false))); 

     $submit = new Zend_Form_Element_Submit('submit'); 

     $this->addElements(array($name, $image, $submit)); 
    } 
} 

这是我的控制器

class Admin_RoomtypesController extends Zend_Controller_Action 
{ 
    public function addAction() 
    { 
     $form = new Admin_Form_RoomtypeForm(); 

     if ($this->getRequest()->isPost()) { 
       $formData = $this->getRequest()->getPost(); 
       $form->populate($formData);  

       $name = $form->getValue('name'); 

     } 
    } 
} 

现在我要上传后更改文件名作为$ name的值文件。我该怎么做?

回答

0

最后我做了如下。

- 形式 -

class Admin_Form_RoomtypeForm extends Zend_Form 
{ 
    public function init() 
    { 

     $name = new Zend_Form_Element_Text('name'); 
     $name->setLabel('Name :'); 

     $image = new Zend_Form_Element_File('image'); 
     $image->setLabel('Image URL :');   
     $image->addValidators(array(array('IsImage', false))); 

     $submit = new Zend_Form_Element_Submit('submit'); 

     $this->addElements(array($name, $image, $submit)); 
    } 
} 

-Controller -

class Admin_RoomtypesController extends Zend_Controller_Action 
{ 
    public function addAction() 
    { 
     $form = new Admin_Form_RoomtypeForm(); 

     if ($this->getRequest()->isPost()) { 
       $formData = $this->getRequest()->getPost(); 
       $form->populate($formData);  

       $name = $form->getValue('name'); 
       $image = $form->getValue('image'); 

       $temp = explode(".", $image); 
       $ext = $temp[count($temp)-1]; 

       $imageName = $name .'.'. $ext; 

       $fullPath = $imagePath ."/". $imageName; 
       copy("/tmp/". $image, $fullPath);  
     } 
    } 
} 

默认图像上传到/ tmp文件夹中。我们可以使用setDestination()方法作为示例来更改它。

感谢所有

0

我必须为我的一个项目做这样的事情,除了我需要独特的文件名。这不是一个完美的解决方案,但它可以让你在正确的轨道上:

<?php 
class My_Filter_UniqueFilename implements Zend_Filter_Interface 
{ 
    public function filter($value) 
    { 
    $upload_dir = pathinfo($value, PATHINFO_DIRNAME); 
    $ext = pathinfo($value, PATHINFO_EXTENSION); 
    $filename = $upload_dir . "/" . md5(microtime()) . "." . $ext; 
    $result = rename($value, $filename); 

    if($result === true) { 
    return $upload_dir . $filename; 
    } 

    require_once 'Zend/Filter/Exception.php'; 
    throw new Zend_Filter_Exception(sprintf("File '%s' could not be renamed. An error occured while processing the file.", $value)); 
    } 
}