2016-04-15 194 views
0

上傳文件名不是擴展名不能保存文件名。我正在使用CakePHP 2.5.5,並且上傳文件「文件名」時出現問題我沒有錯誤,但文件名不保存在數據庫中,但保存擴展名文件都很好。我的代碼: -上傳文件名不能擴展名不能保存文件名php php 2.5.5

public function ajouter() 

    {//verifier si la requete est de type post 
     if ($this->request->is('post')) { 

      $this->Activite->create(); 
      //debug($this->request->data);die(); 

      if ($this->Activite->save($this->request->data)) { 

       $path=$this->request->data['Activite']['actv_file']['name']; 

       $filename=strToLower(pathinfo($path,PATHINFO_BASENAME)); 

    if(!empty($this->request->data['Activite']['actv_file']['tmp_name']) && in_array($filename,array('docx','pdf')))    
       { 

        move_uploaded_file(
        $this->data['Activite']['actv_file']['tmp_name'], 
        'files'.DS.'.'.$filename); 

        $this->Activite->saveField('file',$filename); 

       $this->Session->setFlash('Ajout bien succé.'); // methode du component flash pour définir un message dans une variable session 

       $this->redirect('index'); 
       } 


      } 

    } 

} 

回答

0

你得到正確的文件名與後debug($filename);die();

$filename=strToLower(pathinfo($path,PATHINFO_BASENAME)); 

在所有PHP版本,我用了正確的用法居然是:

strtolower(); 

注意,整個方法名是小寫。如果PHP無法識別該方法,則可能將$filename設置爲NULL

此外,我注意到你的in_array()方法是尋找一個文件擴展名尚未$文件名將包含基本名稱pathinfo($path,PATHINFO_BASENAME);

如果你想,如果你需要添加

$fileExtension = pathinfo($path, PATHINFO_EXTENSION); 
語句輸入您的

並替換:

in_array($filename, array('docx', 'ppt')); 

有:

in_array($fileExtension, array('docx', 'ppt')); 
+0

with debug($ filename); die();顯示我的文件名稱,我也改變功能strtolower();但同樣的問題名稱的文件不保存到數據庫!但與擴展所有好! – Raki

+0

在**你調用'$ this-> Activite-> saveField('file',$ filename);'併發布結果之前,添加這些行**。你可以告訴我們你的表字段名嗎?我們可以告訴我們你的表字段名嗎? –

+1

@drmonkeyninja感謝您的格式修復。我新哈哈。現在我知道應該怎麼做,謝謝! –