2012-12-30 110 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

相關問題