zoukankan      html  css  js  c++  java
  • PHP创建文件夹上传图片

    <?php
    /**
    *文件上传类 Upload
    */
    class Upload {
       
        const UPLOAD_SECCUSS        = "上传成功!请进入下一步..." ;
        const UPLOAD_FAILING        = "上传失败!" ;
        const UPLOAD_ERRORS            = "上传图片失败,是图片文件为空、文件格式不正确,或是文件超过了限大小" ;
        const NOT_UPLOAD_FILE        = "不是上传的文件,你想干嘛!!" ;
        var $id ;    //id关联编号
        var $dirStyle = 0 ; //设置文件上传目录方式0:mdir方式 ;1 :mdir_YM 方式 ; 2:mdir_YM_D 方式
        var $size ;     //文件大小 单位:字节
        var $type ;      //文件类型
        var $path ;    //保存回路径
        var $upfile ; //上传文件数组
        //var $name ;   //form中 "type=file" 输入框的name值
        var $isVaild=false ; //验证
        var $isSuccess=false ;      //是否成功
        //var $newpath ; // 已处理过的路径
        var $newfilename ; //已处理过的文件名

        const MY_DS = '/'; //路径分隔符 通用的
       
        function __construct($upfile,$path,$type="image/pjpeg,image/jpg,image/jpeg,image/gif,image/x-png,image/png,image/bmp",$size=50000){
            $this->path = $path ;
            $this->type = explode(',',$type) ;
            $this->size = $size ;
            $this->upfile = $upfile ;
        }
       
        /**
         *用id号关联文件
         */
        function setId($id){
            $this->id = $id ;
        }
       
        /**
         *设置文件上传目录方式
         */
        function setDirStyle($id=1){
            if($id == 1){
                return ;
            } else {
                $this->dirStyle = 2 ;
            }   
        }
       
        /**
         *验证文件是否可以上传
         */
        function vaild(){
            foreach( $this->type as $value ){
                if( $this->upfile['type'] == $value && $this->upfile['size'] > 0 &&
                    $this->upfile['size'] <= $this->size ){
                    $this->isVaild = true ;
                    return true ;
                }
            }
            return $this->isVaild ;
        }
       
        /**
         *判断是否上传成功
         */
        function isSuccess(){
            return $this->isSuccess ;
        }
       
        /**
         *分年月建立日录
         */
        function mdir_YM($path){
            //$dir = date("Y-m") ;
            $dir = date("Ym") ;
            $path = str_replace(array('\'),self::MY_DS,$path) ;
            if( substr($path,-1,1) != self::MY_DS ){
                $path .= self::MY_DS ;
            }
            if(! file_exists($path.$dir )){
                if( mkdir($path.$dir) ){
                    $this->path= $path.$dir.self::MY_DS ;
                }
            }else{
                $this->path= $path.$dir.self::MY_DS ;
            }
        }
       
        /**
         *分年月/日建立日录
         */
        function mdir_YM_D($path){
            //$dir = date("Y-m") ;
            $dir = date("Ym") ;
            $subdir = date("d") ;
            $path = str_replace(array('\'),self::MY_DS,$path);
           
            if ( substr($path,-1,1) != self::MY_DS ){
                $path .= self::MY_DS ;
            }
           
            $dirPath = $path.$dir ;
            $subDirPath = $dirPath.self::MY_DS.$subdir ;
           
            if (! file_exists( $dirPath )){
                if ( mkdir( $dirPath ) ){
                    if (file_exists($dirPath ) && !file_exists( $subDirPath )){
                        if (mkdir( $subDirPath )){
                            $this->path= $subDirPath.self::MY_DS ;       
                        }
                    }
                }
            } else if (!file_exists( $subDirPath )) {
                if (mkdir( $subDirPath )){
                            $this->path= $subDirPath.self::MY_DS ;       
                }
            } else {
                $this->path = $subDirPath.self::MY_DS ;
            }
        }
       
       
        /**
         *根据路径创建目录
         *@param $path 带文件名的路和径
         */
        static function mdirPath($path){
            $thePath = str_replace(array('\'),self::MY_DS,$path);
            $thePath = dirname(substr_compare($thePath,self::MY_DS,0,1) == 0 ? substr($thePath,1) : $thePath );
            $sub = explode(self::MY_DS,$thePath) ;
            $n = count($sub) ;
            $i = 0 ;
            $tempPath = '';
           
            while($i < $n){
                $tempPath .= $sub[$i++].self::MY_DS ;    
                if (!file_exists($tempPath)) {
                    if (! mkdir($tempPath)) {
                        return false ;
                    }
                }
            }
           
            if($i >= $n){
                return true;
            }
        }
       
        /**
         *(static)
         *分年月/日建立日录
         */
        static function sMdir_YM_D($path){
            //$dir = date("Y-m") ;
            $dir = date("Ym") ;
            $subdir = date("d") ;
            $path = str_replace(array('\'),self::MY_DS,$path) ;
           
            if( substr($path,-1,1) != self::MY_DS ){
                $path .= self::MY_DS ;
            }
           
            $dirPath = $path.$dir ;
            $subDirPath = $dirPath.self::MY_DS.$subdir ;
           
            if (! file_exists( $dirPath )){
                if ( mkdir( $dirPath ) ){
                    if (file_exists( $dirPath ) && !file_exists( $subDirPath )){
                        if (mkdir( $subDirPath )){
                            return $subDirPath.self::MY_DS ;
                        } else {
                            return '' ;
                        }
                    } else {
                        return $subDirPath.self::MY_DS ;
                    }
                } else {
                    return '' ;
                }
            }else if (!file_exists( $subDirPath )){
                        if (mkdir( $subDirPath )){
                            return $subDirPath.self::MY_DS ;
                        } else {
                            return '' ;
                        }
            } else {
                return $subDirPath.self::MY_DS ;
            }
        }
       
        /**
         *返回文件路径名,不包括文件名
         */
        function getPath(){
            return $this->path;
        }
       
        /**
         *返回文件保存的完整路径
         */
        function getFullPath(){
            return (substr_compare($this->path,self::MY_DS,0,1) != 0 ? self::MY_DS.$this->path : $this->path).$this->newfilename;   
        }
       
        /**
         *产生新的文件名
         */
        function mfilename($name){
            $names = explode(".",$name);
            $theId = !empty($this->id) ? $this->id.'_' : '' ;
            $this->newfilename= $theId.uniqid(rand()).".".$names[count($names)-1];
        }
       
        /**
         *返回新的文件名
         */
        function getNewFilename(){
            return $this->newfilename;
        }
       
        /**
         *开始上传
         */
        function doUpload(){
            if($this->vaild()){
                if(is_uploaded_file($this->upfile['tmp_name'])){
                    if($this->dirStyle == 1){
                        $this->mdir_YM($this->path);
                    } else if($this->dirStyle == 2) {
                        $this->mdir_YM_D($this->path);
                    } else {
                        //$this->path = substr_compare($this->path,self::MY_DS,0,1) != 0 ? self::MY_DS.$this->path : $this->path ;
                    }
                   
                    $this->mfilename($this->upfile['name']);
                    if (is_uploaded_file($this->upfile['tmp_name'])){
                        if(move_uploaded_file($this->upfile['tmp_name'],$this->path.$this->getNewFilename())){
                            $msg = self::UPLOAD_SECCUSS ;
                            $this->isSuccess = true;
                        }else{
                            $msg = self::UPLOAD_FAILING ;
                        }
                    }
                   
                } else {
                    $msg = self::NOT_UPLOAD_FILE ;
                }
            }else{
                   $msg = self::UPLOAD_ERRORS. round($this->size/1024) ."KB." ;
            }
            return $msg ;
        }

       
    }
    ?>

  • 相关阅读:
    PHP7函数大全(4553个函数)
    Mysql 查看连接数,状态 最大并发数
    linux安装git
    PHP new StdClass() 创建空对象
    PHP 如何向关联数组指定的 Key 之前插入元素
    php 常用 小知识点
    PHP激活用户注册验证邮箱
    php rsa 加密、解密、签名、验签
    PHP支付接口RSA验证
    [2018-12-07]用ABP入门DDD
  • 原文地址:https://www.cnblogs.com/kuyuecs/p/1575578.html
Copyright © 2011-2022 走看看