搜尋
首頁php教程PHP源码一个简单的php上传类

一个简单的php上传类

<?php
/*
  This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * */
 
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  =&#39;File uploaded SUCCESFULLY&#39;;
    //REMOVE const  FILEUPFAILURE   =&#39;File uploaded FAILED&#39;;
 
    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.&#39;/&#39;.$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 &#39;name&#39;:
                    $this->fileName = $value;
                    break;
 
                    case &#39;error&#39;:
                    $this->errorCode = $value;
                    break;
 
                    case &#39;type&#39;:
                    $this->fileType = $value;
                    break;
 
                    case &#39;size&#39;:
                    $this->fileSize = $value;
                    break;
 
                    case &#39;tmp_name&#39;:
                    $this->fileTempName = $value;
                    break;
 
                    default :
 
                    throw New Exception(&#39;Not a File&#39;);
 
                } //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.php.cn)!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具