一个简单的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  ='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*********************/
}

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/29934.html