老师你好,我根据你讲解的代码编写后,封装上传文件对象后,上传文件总是报文件扩展类型错误,调试后fileInfo信息位NULL
<?php
/**
* Created by PhpStorm.
* User: andin
* Date: 16-3-18
* Time: 上午9:29
*/
class upload{
protected $fileName;
protected $maxSize;
protected $allowMime;
protected $allowExt;
protected $uploadPath;
protected $imgFlag;
protected $fileInfo;
protected $error;
protected $ext;
/**
* @param string $fileName
* @param string $uploadPath
* @param int $maxSize
* @param bool $imgFlag
* @param array $allowMime
* @param array $allowExt
*/
public function _construct($fileName='myfile',$uploadPath='./upload',$maxSize=5242880,$imgFlag=true,$allowMime=array('image/jpeg','image/png','image/gif','image/jpg'),$allowExt=array('jpg','jpeg','txt','png','gif','bmp')){
$this->fileName=$fileName;
$this->maxSize=$maxSize;
$this->allowMime=$allowMime;
$this->allowExt=$allowExt;
$this->uploadPath=$uploadPath;
$this->imgFlag=$imgFlag;
$this->fileInfo=$_FILES[$this->fileName];
}
/**
* 检测是否出错
* @return bool
*/
protected function checkError(){
//if(!is_null($this->fileInfo)) {
if ($this->fileInfo['error'] > 0) {
switch ($this->fileInfo['error']) {
case 1:
$this->error = '超过了php配置文件中upload选项的值';
break;
case 2:
$this->error = '超过了表单中的限制';
break;
case 3:
$this->error = '文件上传不完整';
break;
case 4:
$this->error = '没有选择上传目录';
break;
case 6:
$this->error = '没有找到临时目录';
break;
case 7:
$this->error = '文件不可写';
break;
case 8:
$this->error = '由于php扩展程序中断上传';
break;
}
return false;
}else {
//echo 'aa';
return true;
}
//} else{
// $this->error='文件上传错误';
// return false;
// }
}
/**
* 检测上传文件大小
* @return bool
*/
protected function checkSize(){
if($this->fileInfo['size']>$this->maxSize){
$this->error='上传文件过大';
return false;
}
return true;
}
/**
*检测扩展名
* @return bool
*/
protected function checkExt(){
// $this->ext=strtolower(pathinfo($this->fileInfo['name'],PATHINFO_EXTENSION));
$this->ext=strtolower(pathinfo($this->fileInfo['name'],PATHINFO_EXTENSION));
echo 'bb';
//var_dump($this->fileInfo['name']);
var_dump($this->ext);
if(!in_array($this->ext,$this->allowExt)){
$this->error='不允许的扩展名';
return false;
}
return true;
}
/**
* 检测文件类型
* @return bool
*/
protected function checkMime(){
if(!in_array($this->fileInfo['type'],$this->allowMime)){
$this->error='不允许的文件类型';
return false;
}
return true;
}
/**
* 检测图片是否真实
* @return bool
*/
protected function checkTrueImg(){
if($this->imgFlag){
if(!@getimagesize($this->fileInfo['tmp_name'])){
$this->error='不是真实的图片';
return false;
}
return true;
}
}
/**
* 检测文件是否通过http post方式上传
* @return bool
*/
protected function checkHTTPPost(){
if(!is_uploaded_file($this->fileInfo['tmp_name'])){
$this->error='文件不是通过http post方式上传的';
return false;
}
return true;
}
/**
* 获取错误信息
*/
protected function showError(){
exit('<span style="color: red">'.$this->error.'</span>');
}
/**
* 检测目录不存在就创建
*/
protected function checkUploadPath(){
if(!file_exists($this->uploadPath)){
mkdir($this->uploadPath,0777,true);
}
}
/**
* 产生唯一字符窜当文件名
* @return string
*/
protected function getUniName(){
return md5(uniqid(microtime(true),true));
}
/**
* 上传文件
* @return string
*/
public function loadFile(){
var_dump($this->fileInfo['name']);
if($this->checkError()&&$this->checkSize()&&$this->checkExt()&&$this->checkMime()&&$this->checkTrueImg()&&$this->checkHTTPPost()){
$this->checkUploadPath();
$this->uniName=$this->getUniName();
$this->destination=$this->uploadPath.'/'.$this->uniName.'.'.$this->ext;
if(@move_uploaded_file($this->fileInfo['tmp_name'],$this->destination)){
return $this->destination;
}else{
$this->error='文件移动失败';
$this->showError();
}
}else{
$this->showError();
}
}
}