2012-12-30 70 views
0

我有形式,它允许用户上传的文件。从我的控制器中,我想要获取带有文件名的路径。我正在使用getFileName()方法。但它给下面的错误:如何获取上传文件的路径和文件名中的Zend框架

Message: Method getFileName does not exist 

下面是我的控制器操作:

public function addAction() 
    { 
     $form = new Application_Form_Student(); 
     $form->setAttrib('enctype', 'multipart/form-data'); 
     $form->submit->setLabel('Add'); 
     $this->view->form = $form; 

     if ($this->getRequest()->isPost()) { 
      $formData = $this->getRequest()->getPost(); 
      if ($form->isValid($formData)) { 
       $name = $form->getValue('name'); 
       $email = $form->getValue('email'); 
       $photo = $form->getValue('photo'); 
       $location = $form->getFileName('photo'); 
       $students = new Application_Model_DbTable_Students(); 
       $students->addStudent($name, $email); 

       $this->_helper->redirector('index'); 
      } else { 
       $form->populate($formData); 
      } 
     } 

    } 
+0

如果文件成功上传,它应该位于TEMP文件夹中,如果您自己没有提供任何路径,否则上传的文件将出现在您指定的文件夹中,并且文件的名称不会改变 – Joddy

+0

@Joddy我已经在表单类中提供了路径。但我想从我的控制器中获得它。 什么是错误 信息的含义:方法的getFileName不存在 – ehp

+1

的getFileName不是一个有效的FORM对象的方法,你需要调用一个Zend的文件传输适配器HTTP对象不是表单对象 – Joddy

回答

1

检查,如果这个工程 -

public function addAction() 
{ 
    $form = new Application_Form_Student(); 
    $form->setAttrib('enctype', 'multipart/form-data'); 
    $form->submit->setLabel('Add'); 
    $this->view->form = $form; 

    if ($this->getRequest()->isPost()) { 
     $formData = $this->getRequest()->getPost(); 
     if ($form->isValid($formData)) { 
      $upload = new Zend_File_Transfer_Adapter_Http(); 
      $upload->setDestination("/uploads/files/"); 


      try { 
       $upload->receive(); 
       $location = $upload->getFileName('photo'); 
      }     
      catch(Zend_File_Transfer_Exception $e){ 
       $e->getMessage(); 
      } 
     } else { 
      $form->populate($formData); 
     } 
    } 

} 

第二个方法我在说什么。表单文件元素设置 Zend Framework: Upload file by using Zend Form Element

+0

可以请你告诉我如何获取文件名而不是路径 – ehp

相关问题