热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一个简单的php上传类-PHP源码

一个简单的php上传类
一个简单的php上传类

.
 * */
 
class FileUpload {
    /*
     * @FILE    :   Takes a file from a $_FILES via a $_POST and sets the UPLOAD DIR.
     *              Tests that the submitted data is a type ARRAY
     *              The resulting file is then uploaded to the DIR.
     *              The returning data is a notification to the user.
     * 
     * @AUTHOR  :   Sheldon Kemper
     * @EMAIL   :   sheldonkemper@gmail.com
     * @DATE    :   17 January 2012
     * @COPYRIGHT:  COPYRIGHT 2012 Sheldon Kemper GPL V3
     * 
     * @TDO     :   Needs error-checking
     *              Needs File-type checking
     *              
     *              Create a Multiple file Method.
     *              Needs a test of supplied array matching $_FILES variables.
     * 
     * */
 
    const BOOLTRUE = 1;     //Boolean TRUE.
    const BOOLFALSE = 0;    //Boolean FALSE.
    //REMOVE const  FILEUPCOMPLETE  ='File uploaded SUCCESFULLY';
    //REMOVE const  FILEUPFAILURE   ='File uploaded FAILED';
 
    private $dirSet;    //location of file uploads.
    private $file;      //Post input of type FILE.
    private $errorCode; //The error code associated with this file upload. 
    private $fileName;  //The original name of the file on the client machine.
    private $fileType;  //The mime type of the file, if the browser provided this 
    information. An example would be "image/gif".
    private $fileSize;  //The size, in bytes, of the uploaded file.
    private $fileTempName; //The temporary filename of the file in which the uploaded 
    file was stored on the server.
    private $uploadFile;    //Concates the $dirset with the filename.
    public $message;    //?
 
 
    /*
     * @METHOD      :PUBLIC MAGIC_METHOD __CONSTRUCT.
     * @DESC        :Initialises the file_upload process .
     * @RETURN      :Type STRING
     * */
    public function __construct ( /*REMOVE $dir, $value*/ $config_array  ) {
 
        $this->action_multiple_file_upload ( $config_array ) ;
 
        //REMOVE19012012 $this->set_dir ( $dir );
        //REMOVE19012012 $this->set_postFile ( $value );
        //REMOVE19012012 $this->action_file_move (); 
 
    }
 
    /*
     * @METHOD      :PUBLIC get_fileName.
     * @DESC        :Gets the upload file name.
     * @RETURN      :(string) FileName.
     * */
    public function get_fileName () {
 
        return $this->fileName;
    }
 
    /*
     * @METHOD      :PUBLIC get_fileTempName.
     * @DESC        :Gets the upload Temp file name.
     * @RETURN      :(string) TempFileName.
     * */
    public function get_fileTempName () {
 
        return $this->fileType;
    }
 
    /*
     * @METHOD      :PUBLIC get_errorCode.
     * @DESC        :Gets the upload Error Code.
     * @RETURN      :(int) Error code.
     * */
    public function get_errorCode () {
 
        return $this->errorCode;
    }
 
    /*
     * @METHOD      :PUBLIC get_fileType.
     * @DESC        :Gets the upload File Type.
     * @RETURN      :(string) File Type.
     * */
    public function get_fileType () {
 
        return $this->fileType;
    }
 
    /*
     * @METHOD      :PRIVATE set_dir.
     * @DESC        :Sets the upload directory.
     * @RETURN      :
     * */
    private function set_dir ( $dir ) {
 
        $this->dirSet = $dir;
    }
 
    /*
     * @METHOD      :PRIVATE set_postFile.
     * @DESC        :Sets the $_FILES .
     * @RETURN      :
     * */
    private function set_postFile ( $value ) {
 
        if( isset( $_FILES[ $value ]) ) {
 
         $this->file = $_FILES[$value];
        }
    }
 
    /*
     * @METHOD  :PRIVATE action_file_move.
     * @DESC    :Tests if a POST file was uploaded
     *           Moves file to location.
     * @RETURN  :CONST(string).
     * 
     * */
    public function action_file_move ( ) {
 
        if( $this->bool_file_upload()==1 ) {
 
            $this->uploadfile = $this->dirSet.'/'.$this->fileName;
 
            if( move_uploaded_file( $this->fileTempName,$this->uploadfile )) {
 
                return self::BOOLTRUE;
 
            }else {
 
                return self::BOOLFALSE;
                }//End IF move_uploaded_file.
 
        } else {
 
            return self::BOOLFALSE;
        }//End IF bool_file_upload.
    }//END:METHOD action_file_move.
 
     /* @METHOD     :Private action_multiple_file_upload 
     * @DESC        :Allows for multiple file upload to more than one DIR
     *           
     * @RETURN  : (string) filename
     * 
     * */  
private function action_multiple_file_upload ( $config_array ) {
 
    $this->message = array();
 
    foreach ( $config_array as $dir=>$value ) {
 
        $this->set_dir ( $dir );
 
        $this->set_postFile ( $value );
 
        if ( $this ->action_file_move ( ) ) {
 
            $this->message[] =$this -> get_fileName();
        }//End IF.
    }//End FOREACH $config_array.
 
    return $this->message;
}//END:METHOD action_multiple_file_upload.
 
    /*
     * @METHOD      :PRIVATE array_confirm.
     * @DESC        :Tests if passed argument is type ARRAY.
     * @RETURN      :BOOL.
     * */
 
    private function array_confirm ( $file ) {
 
        if ( is_array( $file )  ) {
 
            return self::BOOLTRUE;
 
        } else { 
 
           return self::BOOLFALSE ;
 
           }//End IF is_array
    }//End METHOD array_confirm
 
    /*
     * @METHOD      :PRIVATE get_loop_array
     * @DESC        :Tests the array for $_FILES value 
     *               adding to the variables index
     * @RETURN      :Sets private variables to VALUE
     * @Param( Array,$array ) :Global $_FILE
     * */
 
    private function get_array_post_loop ( $array ) {
 
        if( $this->array_confirm ( $array ) ) {
 
            foreach ( $array as $key=>$value ) {
 
                switch( $key ) {
 
                    case 'name':
                    $this->fileName = $value;
                    break;
 
                    case 'error':
                    $this->errorCode = $value;
                    break;
 
                    case 'type':
                    $this->fileType = $value;
                    break;
 
                    case 'size':
                    $this->fileSize = $value;
                    break;
 
                    case 'tmp_name':
                    $this->fileTempName = $value;
                    break;
 
                    default :
 
                    throw New Exception('Not a File');
 
                } //End SWITCH
            } //End FOREACH
        }//End IF array_confirm
    } //END METHOD loop_array
 
 
    /*
     * @METHOD  :PRIVATE bool_file_upload
     * @DESC    :Gets the array of values,
     *           tests if it is uploaded via the POST
     * @RETURN  :BOOL.
     * 
     * */
 
    private function bool_file_upload (){
 
        $this->get_array_post_loop ( $this->file );
 
        if(is_uploaded_file( $this->fileTempName )) {
 
            return self::BOOLTRUE;
 
        } else {
 
            return self::BOOLFALSE;
 
        }//End IF
 
    }//END: METHOD bool_file_upload
 
 
 
/***************END CLASS*********************/
}

以上就是一个简单的php上传类的内容,更多相关内容请关注PHP中文网(www.php1.cn)!

推荐阅读
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • yum安装_Redis —yum安装全过程
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Redis—yum安装全过程相关的知识,希望对你有一定的参考价值。访问https://redi ... [详细]
  • 006_Redis的List数据类型
    1.List类型是一个链表结构的集合,主要功能有push,pop,获取元素等。List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,List的设 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
author-avatar
mobiledu2502930413
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有