PHP封装成类(文件上传)

uploadfile.class.php

<?php 
/**
 * Created by PhpStorm.
 * User: huang
 * Date: 2017/7/19
 * Time: 23:20
 */
header("content-type:text/html;charset=utf-8");
$new = new upload();

class upload{
    protected $fileName;
    protected $fileInfo;
    protected $maxSize;
    protected $allowExt;
    protected $allowMime;
    protected $uploadPath;
    protected $imgFlag;
    private $Error;
    private $Ext;

    
    public function __construct($fileName='myfile', $uploadPath='uploads', $maxSize = '2097152', $allowExt = array('jpg', 'jpeg', 'png', 'git', 'wbmp'), $allowMime =array('
        image/png','image/jpeg','image/gif'),$imgFlag = true){
        $this->fileName = $fileName;
        $this->fileInfo = $_FILES[$this->fileName];
        $this->maxSize = $maxSize;
        $this->allowExt = $allowExt;
        $this->allowMime = $allowMime;
        $this->uploadPath = $uploadPath;
        $this->imgFlag = $imgFlag;
    }
    //产生唯一字符串
    protected function getUniname(){
        return md5(uniqid(microtime(true),true));
    }
    //上传文件
    public function upload(){
        if($this->checkError()&&$this->checkSize()&&$this->checkExt()&&$this->imgTure()&&$this->checkMime()&&$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();
        }

    }
    //检测目录是否存在,创建目录
    protected function checkuploadPath(){
        if(!file_exists($this->uploadPath)){
            mkdir($this->uploadPath,0777,true);

        }
    }
    //检测文件大小
    public function checkSize(){
        if($this->fileInfo['size'] > $this->maxSize){
            $this->Error = $this->fileInfo['name'].'文件过大';
            return false;
        }
        return true;
    }



    //检测是否通过HTTP、POST方式上传
    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>');
    }

    //检测文件拓展名
    public 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 imgTure(){
        if($this->imgFlag){
            if(!@getimagesize($this->fileInfo['tmp_name'])){
                $this->Error = '不是真实图片';
                return false;
            }
            return true;
        }
    }

    //检测文件格式
    public function checkMime(){
        if(!@in_array($this->fileInfo['type'],$this->allowMime)){
            $this->Error = '不允许的图片类型';
            return false;
        }
        return true;    
    }


    //检测是否有错
    public function checkError(){
        if(!is_null($this->fileInfo['error'])){
            if($this->fileInfo['error'] > 0){
            switch ($this->fileInfo['error']) {
                case 1:
                    $this->Error = '上传文件超过了配置文件中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 = '文件上传出错';
            return false;
        }
    }
}
?>


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值