首页 > 作文

PHP学习之文件上传类

更新时间:2023-04-06 18:53:26 阅读: 评论:0

<?php$up = new upload();$newpath = $up->uploadfile('fm');if ($newpath === fal) {    var_du英语六级报名费mp($up->errornumber);    var_dump($up->errorinfo);} el {    echo $newpath;}class upload{    //文件上传保存路径    protected $path = './upload/';    //允许文件上传的后缀    protected $allowsuffix = ['jpg', 'jpeg', 'gif', 'wbmp', 'png'];    //允许文件上传的mime类型    protected $allowmime = ['image/jpeg', 'image/gif', 'image/wbmp', 'image/png'];    //允许文件上传的文件最大大小    protected $maxsize = 2000000;    //是否启用随机名    protected $israndname = true;    //加上文件前缀    protected $prefix = 'up_';    //自定义的错误号码和错误信息    protected $errornumber;    protected $errorinfo;    //文件的信息    protected $oldname; //文件名    protected $suffix; //文件后缀    protected $size; //文件大小    protected $mime; //文件mime    protected $tmpname; //文件临时路径    protected $newname; //文件新名字    public function __construct($arr = [])    {        foreach ($arr as $key => $value) {            $this->toption($key, $value);        }    }    public function __get($name)    {        if ($name == 'errornumber') {            return $this->errornumber;        } el if ($name == 'errorinfo') {            return $this->geterrorinfo();        }    }    /**     * 判断这个$key是不是我的成员属性,如果是,则设置     *     * @param [type] $key     * @param [type] $value     * @return void     */    protected function toption($key, $value)    {        //得到所有的成员属性        $keys = array_keys(get_class_vars(__class__));        if (in_array($key, $keys)) {            $this->$key = $value;        }    }    /**     * 文件上传函数     * $key 就是你input框中的name属性值     *     * @param [type] $key     * @return void     */    public function uploadfile($key)    {        //判断有没有设置路径  path        if (empty($this->path)) {            $this->toption('errornumber', -1);            return fal;        }        //判断该路径是否存在,是否可写        if (!$this->check()) {            $this->toption('errornumber', -2);            return fal;        }        //判断$_files里面的error信息是否为0,如果为0,说明文件信息在服务器端可以直接获取,提取信息保存到成员属性中        $error = $_files[$key]['error'];        if ($error) {            $this->toption('errornumber', $error);            return fal;        } el {            //提取文件相关信息并且保存到成员属性中            $this->getfileinfo($key);        }        //判断文件的大小、mime、后缀是否符合        if (!$this->checksize() || !$this->checkmime() || !$this->checksuffix()) {            return fal;        }        //得到新的文件名字        $this->newname = $this->createnewname();        //判断是否是上传文件,并且移动上传文件        if (is_uploaded_file($this->tmpname)) {            if (move_uploaded_file($this->tmpname, $this->path . $this->newname)) {                return $this->path . $this->newname;            } el {                $this->toption('errornumber', -7);                return fal;            }        } el {            $this->toption('errornumber', -6);            return fal;        }    }    /**     * 得到文件的新名字     *     * @return void     */    protected function createnewname()    {        //判断是否使用随机名        if ($this->israndname) {            $name = $this->prefix . uniqid() . '.' . $this->suffix;        } el {            $name = $this->prefix . $this->oldname;        }        return $name;    }    /**     * 判断该路径是否存在,是否可写     *     * @return void     */    protected function check()    {        //文件夹不存在或者不是目录。创建文件夹        if (!file_exists($this->path) || !is_dir($this->path)) {            return mkdir($this->path, 0777, true);        }        //判断文件是否可写        if (!is_writeable($this->path)) {            return chmod($this->path, 0777);        }        return true;    }    /**     * 提取文件相关信息并且保存到成员属性中     *     * @param [type] $key     * @return void     */    protected function getfileinfo($key)    {        // 得到文件名字        $this->oldname = $_files[$key]['name'];        //得到文件的mime类型        $this->mime = $_files[$key]['type'];        //得到文件临时路径        $this->tmpname = $_files[$key]['tmp_name'];        //得到文件大小        $this->size = $_files[$key]['size'];        //得到文件后缀        $this->suffix = pathinfo($this->oldname)['extension'];    }    /**     四川三本录取时间* 判断文件大小     *     * @return void     */    protected function checksize()    {        if ($this->size > $this->maxsize) {            $this->toption('errornumber', -3);            return fal;        }        return true;    }    /**     * 判断文件的mime是否符合     *     * @return void     */    protected function checkmime()    {        if (!in_array($this->mime, $this->allowmime)) {            $this->toption('errornumber', -4);      医疗保障制度      return fal;        }        return true;    }    /**     * 判断文件的后缀是否符合     *     * @return void     */    protected function checksuffix()    {        if (!in_array($this->suffix, $this->allowsuffix)) {            $this->toption('errornumber', -5);            return fal;        }        return true;    }    /**     * 返回错误信息     *     * @return void     */    protected function geterrorinfo()    {        switch ($this->errornumber) {            ca -1:                $str = '文件路径没有设置';                break;            ca -2:                $str = '文件路径不是目录或者没有权限';                break;            ca -3:                $str = '文件大小超过指定范围';                break;            ca -4:                $str = '文件mime类型不符合';                break;            ca -5:        夸人的句子        $str = '文件后缀不符合';                break;            ca -6:                $str = '不是上传文件';                break;            ca -7:                $str = '文件上传失败';                break;            ca 1:                $str = '文件超出php.ini设置大小';                break;            ca 2:                $str = '文件超出html设置大小';                break;            ca 3:                $str = '文件部分上传'; 129手抄报内容               break;            ca 4:                $str = '没有文件上传';                break;            ca 6:                $str = '找不到临时文件';                break;            ca 7:                $str = '文件写入失败';                break;        }        return $str;    }}

测试代码:

<!doctype html><html lang="en"><head>    <meta chart="utf-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="x-ua-compatible" content="ie=edge">    <title>上传文件</title></head><body>    <form action="upload.php" method="post" enctype="multipart/form-data">        <input type="file" name="fm">        <br />        <input type="submit" value="上传">    </form></body></html>

运行结果:

本文发布于:2023-04-06 18:53:24,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/52e0f0c63dffffad1d75e431fa6b1895.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:PHP学习之文件上传类.doc

本文 PDF 下载地址:PHP学习之文件上传类.pdf

标签:文件   路径   后缀   文件上传
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图