龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

一个简单的php上传类

时间:2014-07-22 14:51来源: 作者: 点击:
分享到:
今天在GITHUB上看到这个类,很简单,我也没打算用,最吸引我的是这个文件的注释,我国伟大的程序员同志们慢慢看吧!
今天在GITHUB上看到这个类,很简单,我也没打算用,最吸引我的是这个文件的注释,我国伟大的程序员同志们慢慢看吧!
<?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*********************/
}
精彩图集

赞助商链接