码迷,mamicode.com
首页 > Web开发 > 详细

上传文件,使用面对对象思想实现

时间:2019-05-30 22:01:58      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:put   enc   ESS   图片   入口   Enctype   error   oct   size   

index.php //入口文件

<?php
/**
 * @name index.php
 * @decs
 * @author 老猫 <18368091722@163.com>
 * Updated on: 2019/5/30 13:51
 */
header("Content-Type:text/html;charset=utf-8");
require_once("./file_upload_object.php");

?>

FileUpload.php //文件上传类

<?php
/**
 * @name FileUpload.php
 * @decs
 * @author 老猫 <18368091722@163.com>
 * Updated on: 2019/5/30 20:35
 */


class FileUpload
{
    private $type=array(
        ‘image/jpeg‘,‘image/pjpeg‘,‘image/png‘,‘image/x-png‘,‘image/gif‘
    );//文件类型
    public $maxSize=1048576;//1M=1024*1024,上传的容量
    public $uploadSavePath="./uploads"; //上传保存的路径
    public $errorMessage=""; //错误信息

    public function upload($file){
        //上传类首先得判断上传存不存在错误,错误信息有123467六种情况,0为正常上传
        if($file[‘error‘]>0){
            $errorMsg="错误信息为:";
            switch ($file[‘error‘]){
                case 1:$errorMsg.="文件大小超过了php.ini中upload_max_filesize选项限制的值";
                    break;
                case 2:$errorMsg.="文件大小超过了表单中max_file_size选项指定的值!";
                    break;
                case 3:$errorMsg.="文件只有部分被上传!";
                    break;
                case 4:$errorMsg.="没有文件被上传!";
                    break;
                case 6:$errorMsg.="找不到临时文件夹!";
                    break;
                case 7:$errorMsg.="临时文件写入失败";
                    break;
                default:$errorMsg.=‘未知错误!‘;
                    break;
            }
            return false;
        }
        //判断上传的文件是否属于$type内
        if(!in_array($file[‘type‘],$this->type)){
            //不在所属类型内时
            $this->errorMessage="未定义的文件上传类型";
            return false;
        }
        //判断文件上传的大小不能超过所定义的大小
        if($file[‘size‘]>$this->maxSize){
            $this->errorMessage="超出上传所限制的最大上传容量";
            return false;
        }
        //给上传的图片重命名
        $newFileName=uniqid("php_").strrchr($file[‘name‘],".");
        //设置上传文件的全目录 ./uploads/2018-03-03
        $allPath1=$this->uploadSavePath."/".date("Y-m-d");
        $allPath=$this->uploadSavePath."/".date("Y-m-d")."/".$newFileName;
        //判断这个目录是否存在
        if(!file_exists($allPath1)){
            mkdir($allPath1,‘0777‘,true);
        }
        //移动
        if(!move_uploaded_file($file[‘tmp_name‘],$allPath)){
            $this->errorMessage="文件上传失败";
        }else{
            return $allPath;
        };
    }
}

  file_upload_object.php //文件上传对象实例

<?php
/**
 * @name file_upload_object.php
 * @decs
 * @author 老猫 <18368091722@163.com>
 * Updated on: 2019/5/30 20:32
 */
require ‘./FileUpload.php‘;
$file=isset($_FILES[‘photo‘])?$_FILES[‘photo‘]:"";
if (isset($_FILES[‘photo‘])) {
    $fileUpload=new FileUpload();
    $allPath=$fileUpload->upload($file);
    if(!$allPath){
        //上传失败,打印错误信息
        echo $fileUpload->errorMessage;
        //结束运行
        die();
    }
}else{
    $allPath=‘./default.img‘;
}


require ‘./file_upload_html.html‘;

file_upload_html.html   //文件上传html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>用户头像上传</h2>
<p>用户姓名:张三</p>
现有头像:<img src="<?php echo $allPath; ?>" onerror="this.src=‘./default.jpg‘">
<form method="post" enctype="multipart/form-data">
    <input type="file" name="photo"><br>
    <input type="submit" value="上传">
</form>
</body>
</html>

  

上传文件,使用面对对象思想实现

标签:put   enc   ESS   图片   入口   Enctype   error   oct   size   

原文地址:https://www.cnblogs.com/laomao666/p/10952081.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!