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