PHP文件上传-面向对象的方法(MVC模式)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36431166/article/details/82392113

首先控制器:

<?php
    header("Content-type:text/html;charset=utf8");
    require_once("upload.class.php");
    //获取获取文件的后缀名
    $temp = explode(".",$_FILES['file']['name']);
    $ext = end($temp);//获取数组最后一个元素
    //获取文件的大小、字节
    $size = $_FILES['file']['size'];
    //获取文件格式
    $formats = $_FILES['file']['type'];
    //获取上传错误信息
    $err = $_FILES["file"]["error"];
    //获取文件名
    $filename = $_FILES['file']['name'];
    //获取文件临时储存位置
    $stored = $_FILES["file"]["tmp_name"];
    $service = new upload();
    $res = $service->getFile($ext,$size,$formats,$err,$filename,$stored);
    echo $res;
?>

调用的模型,也就是封装的类

<?php
    header("Content-type:text/html;charset=utf8");
    class Upload {
        public $max_size=2097152;
        public $types=array("gif", "jpeg", "jpg", "png");
        //判断文件类型是否正确
        public function getFile ($type,$size,$format,$err,$filename,$stored) {
            if (!in_array($type,$this->types)) {
                return false;
            }
            if ($size > $this->max_size) {
                return false;
            }
            if ($format=="image/gif" || $format=="image/jpeg" || $format=="image/jpg" || $format=="image/pjpeg" || $format=="image/x-png" || $format=="image/png") {
                if ($err > 0) {
                    return "上传有误!".$err;
                }
                if (file_exists("upload/".$filename)) {
                    return "此文件已经存在!";
                } else {
                    move_uploaded_file($stored,"upload/".$filename);
                    return "文件上传成功,文件所在目录:upload/".$filename;
                }
            } else {
                return "非法的文件格式!";
            }
            exit();
        }  
    }
?>

这其中,有些数据是可以动态的,比如:上传限制的文件大小

使用流程:

1、view层,一个上传的静态页面,上传的时候提交到控制器

2、控制器在去调用模型,使得十分灵活

猜你喜欢

转载自blog.csdn.net/qq_36431166/article/details/82392113