PHP常用工具类之单文件上传类

文件上传类功能包含:

1.允许文件类型,文件大小,文件保存路劲的设置

2.根据年月日生成保存文件的具体目录和重命名上传文件

3.文件上传时异常处理

4.如果上传成功,则返回文件保存路径,新文件名等相关信息的数组

class FileupTool{
    protected $allowExt = 'jpg,jpeg,gif,bmp,png';
    protected $maxSize = 1;//1m
    protected $filePath = 'static/uploads/images/';

    protected $file = null; //存储上传文件信息

    protected $errno = 0;//错误代码
    protected $error  = array(
        0=>'文件上传无异常!',
        1=>'上传文件超过了配置文件php.ini中upload_max_filesize选项限制值!',
        2=> '上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定值!',
        3=>'文件只有部分被上传!',
        4=>'没有文件被上传!',
        6=> '找不到临时文件夹!',
        7=>'文件写入失败!',
        8=>'不允许的后缀名文件',
        9=>'文件大小超出自定义大小的允许范围',
        10=>'文件目录不存在!',
        100=>'file upload failed!',
        200=>'file upload success!'
        );

    /**
     * 外部定义相关属性
     */
    public function setType($type){
        $this->allowExt = $type;
    }

    public function setSize($size){
        $this->maxSize = $size;
    }

    public function setPath($path){
        $this->filePath = $path;
    }

    //文件上传
    public function up($key){
        if(!isset($_FILES[$key])){
            return false;
        }

        $f = $_FILES[$key];
        //文件上传异常处理
        if($f['error'] !=0){         
            $this->errno = $f['error']; 
            return false;
        }

        //获取后缀
        $ext = $this->getExt($f['name']);
        //检查后缀
        if(!$this->isAllow($ext)){
            $this->errno = 8; 
            return false;
        }
        //检查大小
        if(!$this->isAllowSize($f['size'])){
            $this->errno = 9; 
            return false;
        }

        //获取文件上传目录
        $dir= $this->mk_dir();
        if($dir==false){
            $this->errno = 10; 
            return false;
        }

        //文件的重命名
        $newname = $this->randName();

        //重命名后的文件
        $newfile = $newname.'.'.$ext;

        //新文件的文件存储路径
        $path = $dir.'/'.$newfile;

        //存储到数据库时需要去掉ROOT路径
        $imgpath = str_replace(ROOT,'',$path);

        //移动文件到存储目录
        if(move_uploaded_file($f['tmp_name'],$path)){
            $res= array(
                'code'=>200,
                'path'=>$imgpath,
                'name'=>$newfile,
                'msg'=>'file upload success!'
                ); 
            return $res;
        }else{
            $res= array(
                'code'=>100,
                'msg'=>'file upload failed!'
                ); 
            return $res;
        }

    } 


    //获取上传文件的后缀名
    protected function getExt($str){
        $tmp = explode('.',$str);
        return end($tmp);
    }

    //判断上传文件是否是允许的类型
    protected function isAllow($ext){
        return in_array(strtolower($ext),explode(',',strtolower($this->allowExt)));

    }

    //判断你上传文件大小是否是允许范围内
    protected function isAllowSize($size){
        return $size <= $this->maxSize*1024*1024;
    }
    
    //随机定义文件名
    protected function randName(){
        $str = 'abcdefghijklmnopqrstuvwxyz0123456789';
        return substr(str_shuffle($str),0,6).date('Ymd');
    }

    //创建存储上传文件的文件夹
    protected function mk_dir(){
        $dir = ROOT.$this->filePath.date('Y/md');
        if(is_dir($dir) || mkdir($dir,0777,true)){ //短路运算法
            return $dir;
        }else{
            return false;
        }
    }

    //异常信息输出
    public function getError(){
        return  $this->error[$this->errno];
    }


}

调用示例:

    //引入文件上传处理类  
    $fileup = new FileupTool();
 
    //设置图片上传的保存位置
    $fileup->setPath('static/uploads/images/');

    //获取文件上传时附带的数据,表单name即文件名字
    $filename = $_POST['filename'];  //ori_img

    //调用文件上传函数
    $res = $fileup->up($filename);

    echo json_encode($res);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值