2012-01-04 42 views
1

我有控制器的代碼如下:無法重命名Zend框架上載的圖像

$form_company=new Project_Form_AddCompany(); 
    $this->view->form=$form_company; 

    $form_company->setAction('add-Company'); 
    if ($this->_request->isPost()) { 
     $formData = $this->_request->getPost(); 
     if ($form_company->isValid($formData)) { 

      $company_name = $this->_getParam('company', 0); 
      echo $company_name; 
      // success - do something with the uploaded file 
      $uploadedData = $form_company->getValues(); 
      $form_company->uploaded_file->addFilter(new Zend_Filter_File_Rename(array('target' => $company_name.'.jpg'))); 
      Zend_Debug::dump($uploadedData, '$uploadedData'); 
      //echo 'End: '; 


     } 

    // action body 
} 

雖然在形式I具有以下代碼:

<?php 

class Project_Form_AddCompany extends Zend_Form 
{ 

public function init() 
{ 
    $company=new Zend_Form_Element_Text('company'); 
    $company->setLabel('CompanyName') 
      ->setRequired(true); 

    $com_des=new Zend_Form_Element_Textarea('com_des'); 
    $com_des->setLabel('CompanyDescription') 
      ->setAttrib('cols', '40') 
      ->setAttrib('rows', '4') 
      ->setAttrib('style', 'resize: none;') 
      ->setRequired(true) 
       ->addValidator('NotEmpty'); 

    $com_addr=new Zend_Form_Element_Textarea('com_addr'); 
    $com_addr->setLabel('CompanyAddress') 
      ->setAttrib('cols', '40') 
      ->setAttrib('rows', '4') 
      ->setAttrib('style', 'resize: none;') 
      ->setRequired(true) 
       ->addValidator('NotEmpty'); 

    $file = new Zend_Form_Element_File('uploaded_file'); 

    $file->setDestination(PUBLIC_PATH . '/images/') 
      ->setLabel('File') 
      ->setRequired(true) 
      ->addValidator('NotEmpty'); 


    $submit = new Zend_Form_Element_Submit('submit'); 

    $this->addElements(array($company,$com_des,$com_addr,$file,$submit)); 

} 

} 

由於我必須重新命名的上傳的圖像to $ company_name.png那就是爲什麼我在控制器中使用addFilter方法,其中$ company_name是用戶輸入的textfield公司(在表單中)的值。但名稱未被更改。要重命名應該做什麼?

回答

0

您正在檢索表單值後添加過濾器,這就是爲什麼它沒有被應用。

在檢索上傳的文件後調用move_uploaded_file() PHP函數會不會更簡單?

類似以下內容:

if (!$form_company->uploaded_file->receive()) { 
    // Error! 
} 

$location = $form_company->uploaded_file->getFileName(); 

move_uploaded_file($location, $yourLocation . $company_name.'.jpg'; 

如果不是,它總是可以使用rename()重命名上傳文件到你需要的任何名稱。

希望有幫助,

+0

在我的情況下,$ location和$ yourLocation是相同的,因爲我已經在窗體中指定了路徑,但是在寫入上面的代碼之後,圖像沒有被重命名。 – ryan 2012-01-04 13:40:11

+0

這意味着move_uploaded_file返回false:這裏的$ location是「C:\ Users \ 398853 \ Documents \ NetBeansProjects \ MST \ public/images \ Chrysanthemum.jpg」,而$ yourLocation。$ company_name。'。jpg'是「C:\ Users \ 398853 \ Documents \ NetBeansProjects \ MST \ public/images/jhm.jpg「 – ryan 2012-01-04 13:50:38

+0

您是否嘗試過使用'rename()'? – dinopmi 2012-01-04 14:26:47