上传名称不扩展的文件无法保存文件蛋糕php 2.5.5的名称

时间:2016-04-15 09:56:02

标签: cakephp cakephp-2.5

上传名称不是扩展名的文件无法保存文件名。我正在使用CakePHP 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');
                 }


             }

    }

}

1 个答案:

答案 0 :(得分:0)

您是否在debug($filename);die();之后获得了正确的文件名:

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

在所有php版本中,我使用了正确的用法实际上是:

strtolower();

请注意,整个方法名称是小写的。如果PHP无法识别该方法,可能会将$filename设置为NULL

另外我注意到你的in_array()方法正在寻找文件扩展名,而$ filename将包含基本名称pathinfo($path,PATHINFO_BASENAME);

如果您想输入if语句,则需要添加

$fileExtension = pathinfo($path, PATHINFO_EXTENSION );

并替换:

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

使用:

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