php面向对象文件上传

文件上传对象:
class upload{
protected $fileName;
protected $uploadPath;
protected $imgFlag;
protected $maxSize;
protected $allowExt;
protected $allowMime;
protected $fileInfo;
protected $error;
protected $ext;
protected $destnaion;
protected $uniName;
public function __construct($fileName='myFile',$uploadPath='./upload',$imgFlag=true,$maxSize=5242880,$allowExt=array('jpeg','jpg','png','gif'),$allowMime=array('image/jpeg','image/png','image/gif')){
$this->fileName=$fileName;
$this->maxSize=$maxSize;
$this->allowMime=$allowMime;
$this->allowExt=$allowExt;
$this->uploadPath=$uploadPath;
$this->imgFlag=$imgFlag;
$this->fileInfo=$_FILES[$this->fileName];
}
protected function checkError(){
if( !is_null($this->fileInfo)) {
if ($this->fileInfo['error'] > 0) {
switch ($this->fileInfo['error']) {
case 1:
$this->error = '超过PHP配置文件中upload_max_filesize选项的值';
break;
case 2:
$this->error = '超过表单中MAX_FILE_SIZE设置的值';
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 {
return true;
}
}else{
$this->error='上传文件出错';
}
}
protected function checkSize(){
if($this->fileInfo['size']>$this->maxSize){
$this->error='上传文件过大';
return false;
}
return true;
}
protected function checkExt(){
$this->ext=strtolower(pathinfo($this->fileInfo['name'],PATHINFO_EXTENSION));
if(!in_array($this->ext,$this->allowExt)){
$this->error='';
return false;
}
return true;
}
protected function checkMime(){
if(!in_array($this->fileInfo['type'],$this->allowMime)){
$this->error='不允许的文件类型';
return false;
}
return true;
}
protected function checkTrueIamge(){
if($this->imgFlag){
if(!@getimagesize($this->fileInfo['tmp_name'])){
$this->error='传输的不是真实图片';
return false;
}
return true;
}
return true;
}
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);
}
}
protected function getUniName(){
return md5(uniqid(microtime(true),true));
}
public function uploadFile(){
if($this->checkError()&&$this->checkSize()&&$this->checkExt()&&$this->checkMime()&&$this->checkTrueIamge()&&$this->checkHTTPPost()){
$this->checkUploadPath();
$this->uniName=$this->getUniName();
$this->destnaion=$this->uploadPath.'/'.$this->uniName.'.'.$this->ext;
if(@move_uploaded_file($this->fileInfo['tmp_name'],$this->destnaion)){
return $this->destnaion;
}else{
$this->error='文件移动失败';
$this->checkError();
}
}else{
$this->showError();
}
}
}
调用上传文件对象(接受html传值):
header('content-type:text/html;charset=utf-8');
require_once 'upload.class.php';
$upload=new upload();
$dest=$upload->uploadFile();
echo $dest;
posted @ 2017-04-21 16:01  sungang  阅读(422)  评论(0编辑  收藏  举报