2016-04-15 150 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感谢您的格式修复。我新哈哈。现在我知道应该怎么做,谢谢! –