微型php框架 library/upload.class.php
admin
2023-07-02 07:44:05
0次

上传类库


class upload {

    protected $allowExt = array('jpg','jpeg','gif','png','bmp');

    protected $allowSize = 1; // 最大上传大小,单位为M


    protected $errno = 0;

    protected $error = array(

        0=>'上传完成',

        1=>'文件超出upload_max_filesize',

        2=>'文件超出表单中 MAX_FILE_SIZE 选项指定的值',

        3=>'文件只有部分被上传',

        4=>'没有文件被上传',

        6=>'找不到临时目录',

        7=>'文件定入失败',

        8=>'文件大小超出配置文件的限制',

        9=>'不允许的文件类型',

        10=>'创建目录失败',

        11=>'未知错误,反思中'

    );


    // 获取后缀

    protected function getExt($file) {

        $ext = strtolower(strrchr($file,'.'));


        return $ext;

    }


    // 检验后缀

    protected function checkExt($ext) {

        return in_array(ltrim($ext,'.'),$this->allowExt);

    }


    // 检验大小

    protected function checkSize($size) {

        return $size <= $this->allowSize * 1000 * 1000;

    }


    // 按日期生成目录

    protected function mk_dir() {

        $dir = date('Y/m/d',time());

        $dir = ROOT . 'data/p_w_picpaths/' . $dir;


        if(!is_dir($dir)) {

            if(!mkdir($dir,0777,true)) {

                return false;

            }

        }


        return $dir;

    }



    // 生成随机文件名

    protected function randName($n = 6) {

        if($n <= 0) {

            return '';

        }


        $str = 'abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ0123456789';

        $str = substr(str_shuffle($str),0,$n);


        return $str;

    }


    public function up($name) {

        // $_FILES里面有没有$name指定的单元

        if(!isset($_FILES[$name])) {

            return false;

        }


        $f = $_FILES[$name];


        // 判断错误码,是否上传成功

        if(($this->errno = $f['error']) > 0) {

            return false;

        }


        // 判断大小

        if(!$this->checkSize($f['size'])) {

            $this->errno = 8;

            return false;

        }

        

        // 判断类型

        $ext = $this->getExt($f['name']);

        if(!$this->checkExt($ext)) {

            $this->errno = 9;

            return false;

        }


        // 上传,返回路径

        $path = $this->mk_dir();

        if(!$path) {

            $this->errno = 10;

            return false;

        }


        $filename = $this->randName(6);

        $path = $path . '/' . $filename . $ext;


        if(!move_uploaded_file($f['tmp_name'],$path)) {

            $this->errno = 11;

            return false;

        }

        

        $path = str_replace(ROOT,'',$path);

        return $path;

    }


    // 获取错误的接口

    public function getErr() {

        return $this->error[$this->errno];

    }


    // 设置允许的后缀

    public function setExt($arr) {

        $this->allowExt = $arr;

    }


    // 设置最大上传值

    public function setSize($num=2) {

        $this->allowSize = $num;

    }

}



/*

define('ROOT','D:/www/0713/');

$upload = new upload();


if($path = $upload->up('pic')) {

    echo $path,'
';

    echo '上传成功';

} else {

    echo $upload->getErr();

}


*/


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...