作者:mobiledu2502930413 | 来源:互联网 | 2018-03-23 20:24
一个简单的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)!