PHP文件上传类
admin
2023-06-13 03:42:00
0
class Upload{

    //错误信息
    private $errorNo;
    private $errorMsg;
    //文件类型
    private $ext;
    //允许的文件类型
    private $allowExt;
    //文件的大小
    private $size;
    //允许的文件大小
    private $allowSize;
    //存放图片的主文件名称
    private $dir;
    //子文件夹名称
    private $dirSec;
    //临时文件名
    private $tmpName;
    //分隔符
    const DS = DIRECTORY_SEPARATOR;

    public function __construct($file,$dir='upload',$allowExt=['jpg','jpeg','gif','png'],$allowSize = 2097152){
        $this->errorNo = $file['error'];
        $this->ext = $file['name'];
        $this->size = $file['size'];
        $this->tmpName=$file['tmp_name'];
        $this->dir = $dir;
        $this->allowExt=$allowExt;
        $this->allowSize=$allowSize;
    }

    public function UpLoad(){
        if(!$this->checkFile()){
            return $this->errorMsg;
        }

        if(!$this->createDir()){
            return $this->errorMsg;
        };
        echo $this->moveFile();
    }

    private function checkFile(){
        if(!$this->checkError()){
            $this->errorMsg='文件错误,无法上传!';
            return false;
        }
        if(!$this->checkExt()){
            $this->errorMsg='不是图片,无法上传!';
            return false;
        }
        if(!$this->checkSize()){
            $this->errorMsg='文件超过指定大小,无法上传';
            return false;
        }

        return true;
    }

    //检查文件错误
    private function checkError(){
        if($this->errorNo!=0){
            return false;
        }
        return true;
    }

    //检查文件类型
    private function checkExt(){
        if(!in_array(pathinfo($this->ext)['extension'],$this->allowExt)){
            return false;
        }
        return true;
    }

    //检查文件大小
    private function checkSize(){
        if($this->size > $this->allowSize){
            return false;
        }
        return true;
    }

    //创建文件夹
    private function createDir(){
        $this->dirSec = $this->dir.self::DS.date('Y-m-d');
        if(!file_exists($this->dir)){
            if(!(mkdir($this->dir) && mkdir($this->dirSec))){
                $this->errorMsg='主目录创建失败';
                return false;
            }
        }elseif(!file_exists($this->dirSec)){
            if(!mkdir($this->dirSec)){
                $this->errorMsg='子目录创建失败';
                return false;
            }
        }
        return true;
    }

    //移动文件
    private function moveFile(){
        $imgName = date('YmdHis').'_'.mt_rand(10000,99999);
        move_uploaded_file($this->tmpName,$this->dirSec.self::DS.$imgName.'.'.pathinfo($this->ext)['extension']);
        return $this->dirSec.self::DS.$imgName.'.'.pathinfo($this->ext)['extension'];
    }
}

自己写了一个,拿去直接用
$file = $_FILES['img'];

//new Upload(获取的文件信息,上传的文件夹,允许的文件类型,允许的文件大小);
$upload = new Upload($file,'upload',['gif','png','jpg','jpeg'],444444444);
$upload->UpLoad();

相关内容

热门资讯

王毅会见巴军方高层,谈及伊朗局... 据凤凰卫视报道,中共中央政治局委员、外交部长王毅5月25日在人民大会堂会见巴基斯坦国防军司令兼陆军参...
何妨把课堂打造成学术“直播间” 评论员说 何妨把课堂打造成学术“直播间” ■ 本报评论员 刘晓庆 其实,不只是大学课堂越来越“静悄悄...
空间站完成第8次“太空会师” 5月25日在北京航天飞行控制中心飞控大厅拍摄的神舟二十一号航天员乘组和神舟二十三号航天员乘组拍摄“全...
美军称在伊朗南部实施自卫打击 央视记者获悉,美国中央司令部发言人蒂姆·霍金斯上尉表示,美军25日在伊朗南部实施了自卫打击,“旨在保...
小米押注!闪回科技四次递表港交... 【大河财立方消息】5月25日,闪回科技有限公司(以下简称闪回科技)在港交所提交上市申请,独家保荐人为...
神舟二十三号飞船发射任务圆满成... 乘组一名航天员将开展一年期在轨驻留试验 神舟二十三号飞船发射任务圆满成功 北京时间5月24日23时0...
西安警方:女孩与父亲争执被路人... 5月25日凌晨,针对网传“16岁女孩被陌生男子殴打”一事,西安市公安局莲湖分局发布警情通报。据江西广...
力鼎光电获得外观设计专利授权:... 证券之星消息,根据天眼查APP数据显示力鼎光电(605118)新获得一项外观设计专利授权,专利名为“...
“一箭8星”再启新程!中科宇航... IT之家 5 月 25 日消息,中科宇航今日宣布,近日,力箭一号遥十四运载火箭在中科宇航产业化基地如...
鄠图科普丨一起“趣”阅读|火箭... 火箭发射是太空旅行的开始, 也是人类探索宇宙的重要一步。 火箭是载人和无人航天器进入太空的必备工具,...