Jump to content

Chip upload class


abeautifulmind

Recommended Posts

Good evening to all. I want to ask if anyone can help.

I found this php upload class (free and good i thing) i want to report errors such as wrong extention file,or big file and so but i am comfused(not good in oop php).Could anyone help?

The class

<?php
/*
|-----------------
| Author:	Life.Object
| E-Mail:	life.object@gmail.com
| Website:	http://www.tutorialchip.com/
| Help:		http://www.tutorialchip.com/php-upload-class/
| Version:	1.0
| Released: December 18, 2010
| Updated: December 18, 2010
|------------------
*/

class chip_upload {

/*
|---------------------------
| Properties
|---------------------------
*/

private $upload_hook = array();

private $args = array (
					'upload_file'		=>	NULL,
					'upload_directory'	=>	NULL,
					'allowed_size'		=>	512000,						
					'extension_check'	=>	TRUE,
					'upload_overwrite'	=>	FALSE,
				);

private $allowed_extensions = array (

					/* Archives */
					'zip'	=> TRUE,
					'7z'	=> TRUE,

				  	/* Documents */
				  	'txt'	=> TRUE,
					'pdf'	=> TRUE,
				  	'doc' 	=> TRUE,
				  	'xls'	=> TRUE,
				  	'ppt'	=> TRUE,
				  
				  	/* Executables */
				  	'exe'	=> FALSE,

				  	/* Images */
				  	'gif'	=> TRUE,
				  	'png'	=> TRUE,
				  	'jpg'	=> TRUE,
				  	'jpeg'	=> TRUE,

				  	/* Audio */
				  	'mp3'	=> TRUE,
				  	'wav'	=> TRUE,

				  	/* Video */
				  	'mpeg'	=> TRUE,
				  	'mpg'	=> TRUE,
				  	'mpe'	=> TRUE,
				  	'mov'	=> TRUE,
				  	'avi'	=> TRUE

				);


/*
|---------------------------
| Constructor
|
| @public
| @param array $args
| @param array $allowed_extensions
|
|---------------------------
*/

public function __construct() {
}

/*
|---------------------------
| Print variable in readable format
|
| @public
| @param string|array|object $var
|
|---------------------------
*/

public function chip_print( $var ) { 

	echo "<pre>";
    	print_r($var);
   	 	echo "</pre>";

}

/*
|---------------------------
| Update default arguments
| It will update default array of class i.e $args
|
| @private
| @param array $args - input arguments
| @param array $defatuls - default arguments 
| @return array
|
|---------------------------
*/

private function chip_parse_args( $args = array(), $defaults = array() ) { 
	return array_merge( $defaults, $args );	 
}

/*
|---------------------------
| Get extension and name of file
|
| @private
| @param string $file_name 
| @return array - having file_name and file_ext
|
|---------------------------
*/

private function chip_extension($file_name) {
	$temp = array();
	$temp['file_name'] = strtolower( substr( $file_name, 0, strripos( $file_name, '.' ) ) );
    $temp['file_extension'] = strtolower( substr( $file_name, strripos( $file_name, '.' ) + 1 ) );
	return $temp;
}

/*
|---------------------------
| Get safe string
|
| @private
| @param string $var 
| @return string
|
|---------------------------
*/

public function chip_safe_string( $var = "", $separator = "" ) {
	return preg_replace('|[^a-zA-Z0-9_]|',$separator,$var);
}

/*
|--------------------------
| Get error status of uploaded file
|
| @private
| @param integer $error_code
| @return string
|--------------------------
*/

private function chip_upload_error( $error_code ) {

	switch ( $error_code ) {
	   
	   case UPLOAD_ERR_OK:
		   	$error = "All OK";
		   	break;
	   
	   case UPLOAD_ERR_INI_SIZE:
		   	$error = "The uploaded file exceeds the upload_max_filesize directive (".ini_get("upload_max_filesize").") in php.ini.";
		   	break;
	   
	   case UPLOAD_ERR_FORM_SIZE:
		   	$error = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
		   	break;
	   
	   case UPLOAD_ERR_PARTIAL:
			$error = "The uploaded file was only partially uploaded.";
		   	break;
	   
	   case UPLOAD_ERR_NO_FILE:
			$error = "No file was uploaded.";
		   	break;
	   
	   case UPLOAD_ERR_NO_TMP_DIR:
			$error = "Missing a temporary folder.";
		   	break;
	   
	   case UPLOAD_ERR_CANT_WRITE:
			$error = "Failed to write file to disk.";
		   	break;
	   
	   default:
			$error = "Unknown Error.";

	}

	return $error;

}

/*
|---------------------------
| Set default arguments
| It will set default array of class i.e $args
|
| @private
| @param array $args
| @return 0
|
|---------------------------
*/

private function set_args( $args = array() ) { 

	$defaults = $this->get_args();
	$args = $this->chip_parse_args( $args, $defaults );
	$this->args = $args;	 
}

/*
|---------------------------
| Get default arguments
| It will get default array of class i.e $args
|
| @public
| @return array
|
|---------------------------
*/

public function get_args() { 
	return $this->args;	 
}

/*
|---------------------------
| Set default allowed extensions
| It will set default array of class i.e $allowed_extensions
|
| @private
| @param array $allowed_extensions
| @return 0
|
|---------------------------
*/

private function set_allowed_extensions( $allowed_extensions = array() ) { 

	$defaults = $this->get_allowed_extensions();
	$allowed_extensions = $this->chip_parse_args( $allowed_extensions, $defaults );
	$this->allowed_extensions = $allowed_extensions;	 

}

/*
|---------------------------
| Get default allowed extensions
| It will get default array of class i.e $allowed_extensions
|
| @public
| @return array
|
|---------------------------
*/

public function get_allowed_extensions() { 
	return $this->allowed_extensions;	 
}

/*
|---------------------------
| Set Upload Var
| It will set upload variable
|
| @private
| @param string $upload_directory
! @return boolean
|
|---------------------------
*/

private function set_upload_var( $files ) { 

	$temp = array();
	$files_upload_attributes = array( 'name', 'type', 'tmp_name', 'error', 'size' );

	//$this->chip_print( $files );
	$upload_files = count( $files['name'] );
	$upload_files = ( !empty( $upload_files ) ) ? $upload_files : 0 ;  		

	$foreachindex = 0;
	for( $i = 1; $i <= $upload_files; $i++ ) {


		foreach( $files_upload_attributes as $val ) {				
			$temp[$i][$val] =  $files[$val][$foreachindex];	

			if( $val == "error" ) {
				$temp[$i]['error_status'] = $this->chip_upload_error( $files[$val][$foreachindex] );
			}

		}
		++$foreachindex;

	}

	return $temp;

}

/*
|---------------------------
| Get Upload Var
| It will set upload variable
|
| @private
| @param array $files
! @return array
|
|---------------------------
*/

public function get_upload_var( $files = array() ) { 
	return $this->set_upload_var( $files );
}

/*
|---------------------------
| Set Directory Path
| It will validate upload directory
|
| @private
| @param string $upload_directory
! @return boolean
|
|---------------------------
*/

private function set_directory_path( $upload_directory ) { 

	if( is_dir( $upload_directory ) ) {
		return 1;
	}

	return 0;

}

/*
|---------------------------
| Set Directory Writable
| It will validate writable directory
|
| @private
| @param string $upload_directory
! @return boolean
|
|---------------------------
*/

private function set_directory_writable( $upload_directory ) { 

	if( is_writable( $upload_directory ) ) {
		return 1;
	}

	return 0;

}

/*
|---------------------------
| Set Upload Hook
| It will set upload hook
|
| @private
| @param array $var
|
|---------------------------
*/

private function set_upload_hook( $var = array() ) { 		
	$this->upload_hook = $var;			 
}

/*
|---------------------------
| Get Upload Hook
| It will Get upload hook
|
| @public
| @param array $var
|
|---------------------------
*/

public function get_upload_hook() { 		
	return $this->upload_hook;			 
}

/*
|---------------------------
| Set Upload
| It will upload file.
|
| @private
! @return array
|
|---------------------------
*/

public function set_upload( $args, $allowed_extensions ) { 

	/* Arguments */
	$this->set_args( $args );
	$args = $this->get_args();
	//$this->chip_print( $args );
	extract( $args );

	/* Allowed Extensions */
	$this->set_allowed_extensions( $allowed_extensions );
	$allowed_extensions = $this->get_allowed_extensions();
	//$this->chip_print( $allowed_extensions );

	/* Output */
	$temp = array();
	$temp['upload_directory'] = "Invalid - " . $upload_directory;
	$temp['upload_directory_writable'] = "Invalid - Directory is not writable";
	$temp['upload_file_extension'] = "Invalid - Extension is not allowed";
	$temp['upload_file_size'] = "Invalid - Size " . $upload_file['size'] . " bytes";
	$temp['upload_process'] = 0;
	$temp['upload_move'] = FALSE;
	$temp['upload_overwrite'] = $upload_overwrite;

	/* Submitted Data */

	$temp['upload_file']['name'] = $upload_file['name'];
	$temp['upload_file']['type'] = $upload_file['type'];
	$temp['upload_file']['tmp_name'] = $upload_file['tmp_name'];
	$temp['upload_file']['error'] = $upload_file['error'];
	$temp['upload_file']['error_status'] = $upload_file['error_status'];
	$temp['upload_file']['size'] = $upload_file['size'];

	/*
	|---------------------------
	| Set 1 - Directory Path Validation
	|---------------------------
	*/

	if( !empty($upload_directory) ) {

		/* Upload Directory Path Validation */
		if ( $this->set_directory_path( $upload_directory ) ) {

			$temp['upload_directory'] = "Valid - " . $upload_directory;
			$temp['upload_process']++;

			/*
			|---------------------------
			| Set 2 - Directory Write Permissions
			|---------------------------
			*/

			if ( $this->set_directory_writable( $upload_directory ) ) {

				$temp['upload_directory_writable'] = "Valid - Directory is writable";
				$temp['upload_process']++;
				$temp['upload_file']['directory'] = $upload_directory;

			} // if ( $this->set_directory_writable( $upload_directory ) )

		} // if ( $this->set_directory_path( $upload_directory ) )

	} // if( !empty($upload_directory) )


	if ( !empty( $upload_file['name'] ) ) {

		/*
		|---------------------------
		| Set 3 - Extension Validation
		|---------------------------
		*/

		/* File Name and Extension */
		$nameext = $this->chip_extension( $upload_file['name'] );
		$file_name = $nameext['file_name'];
		$file_extension = $nameext['file_extension'];

		$temp['upload_file']['nameonly'] = $file_name;
		$temp['upload_file']['extension'] = $file_extension;

		/* Allowed Extension - Validation */
		if ( $extension_check == FALSE ) {
			$temp['upload_file_extension'] = "Valid - Extension is allowed";
			$temp['upload_process']++;
		} 

		else if ( array_key_exists( $file_extension, $allowed_extensions ) && $allowed_extensions[$file_extension] == TRUE ) {
			$temp['upload_file_extension'] = "Valid - Extension is allowed";
			$temp['upload_process']++;		
		}

		/*
		|---------------------------
		| Set 4 - Size Validation
		|---------------------------
		*/

		/* Allowed Size Manipulation*/
		if ( $allowed_size >= $upload_file['size'] ) {
			$temp['upload_file_size'] = "Valid - Size " . $upload_file['size'] . " bytes";
			$temp['upload_process']++;
		}		

	} // if ( !empty( $upload_file['name'] ) )

	/*
	|---------------------------
	| Upload Move Status
	|---------------------------
	*/		

	if ( $temp['upload_process'] == 4 && is_uploaded_file( $upload_file['tmp_name'] ) && $upload_file['error'] == UPLOAD_ERR_OK ) {		
		$temp['upload_move'] = TRUE;
	}

	/*
	|---------------------------
	| Upload Hook
	|---------------------------
	*/

	$this->set_upload_hook( $temp );

	//$this->chip_print( $temp );

	return $temp;

}

/*
|---------------------------
| Get Upload
| It will upload file.
|
| @public
! @return array
|
|---------------------------
*/

public function get_upload( $args = array(), $allowed_extensions = array() ) { 
	return $this->set_upload( $args, $allowed_extensions );	 
}

/*
|---------------------------
| Set Upload Move
| It will upload file.
|
| @public
! @return array
|
|---------------------------
*/

public function set_upload_move( $name ) { 

	/* Output */
	$temp = array();		

	/* Upload Hook */
	$upload_hook = $this->get_upload_hook();

	if ( $upload_hook['upload_move'] == TRUE ) {

		/*
		|---------------------------
		| Move Upload Manipulation
		|---------------------------
		*/

        	$name = ( !empty( $name ) ) ? $name : $upload_hook['upload_file']['nameonly'];
		$name = $this->chip_safe_string( $name );

		$extension = $upload_hook['upload_file']['extension'];
        	
		$temp_name = $upload_hook['upload_file']['tmp_name'];
		$dest_name = $upload_hook['upload_file']['directory'] . $name . "." . $extension;

		/*
		|---------------------------
		| Overwrite Validation
		|---------------------------
		*/

		if ( $upload_hook['upload_overwrite'] == FALSE ) {

			if ( file_exists( $dest_name ) ) {

				$i = 1;
				$max_loops = 100;
				while ( file_exists( $dest_name ) && $i <= $max_loops ) {

					$name_new = $name . "_" . $i;
					$name_new = $this->chip_safe_string( $name_new );

					$dest_name = $upload_hook['upload_file']['directory'] . $name_new . "." . $extension;

					$i++; 

				} // while ( file_exists( $dest_name ) )

			} // if ( file_exists( $dest_name ) )

		}

		/*
		|---------------------------
		| Move File
		|---------------------------
		*/

		$name = ( empty($name_new) ) ? $name : $name_new ;			

		if ( move_uploaded_file( $temp_name, $dest_name ) ) {

			$temp['uploaded_status'] = TRUE;
			$temp['uploaded_file'] = $name;
			$temp['uploaded_extension'] = $extension;
			$temp['uploaded_directory'] = $dest_name;


		} else {

			$temp['uploaded_status'] = FALSE;
			$temp['uploaded_file'] = $name;
			$temp['uploaded_extension'] = $extension;
			$temp['uploaded_directory'] = $dest_name;

		} // if ( move_uploaded_file( $temp_name, $dest_name ) )


	}

	return $temp;

	//return $this->set_upload_move( $name );	 
}

/*
|---------------------------
| Get Upload Move
| It will upload file.
|
| @public
| @param string $name
! @return array
|
|---------------------------
*/

public function get_upload_move( $name = FALSE ) { 
	return $this->set_upload_move( $name );	 
}

/*
|---------------------------
| Destructor
|---------------------------
*/

public function __destruct() {
}
}
?>

 

and index where i want the errors to be displayed

<?php
/*
|-----------------
| Chip Error Manipulation
|------------------
*/

error_reporting(-1);

/*
|-----------------
| Chip Constant Manipulation
|------------------
*/

define( "CHIP_DEMO_FSROOT",				__DIR__ . "/" );

/*
|-----------------
| POST
|------------------
*/

if( $_POST ) {

/*
|-----------------
| Chip Upload Class
|------------------
*/

require_once("class.chip_upload.php");

/*
|-----------------
| Upload(s) Directory
|------------------
*/

$upload_directory = CHIP_DEMO_FSROOT . "uploads/";

/*
|-----------------
| Class Instance
|------------------
*/

$object = new chip_upload();

/*
|-----------------
| $_FILES Manipulation
|------------------
*/

$files = $object->get_upload_var( $_FILES['upload_file'] );
//$object->chip_print( $files );

/*
|-----------------
| Upload File
|------------------
*/

foreach( $files as $file ) {

	/*
	|---------------------------
	| Upload Inputs
	|---------------------------
	*/

	$args = array(
		  'upload_file'			=>	$file,
		  'upload_directory'	=>	$upload_directory,
		  'allowed_size'		=>	512000,
		  'extension_check'		=>	TRUE,
		  'upload_overwrite'	=>	FALSE,
	  );
	  
	$allowed_extensions = array(
		'pdf'	=> FALSE,
	);

	/*
	|---------------------------
	| Upload Hook
	|---------------------------
	*/		

	$upload_hook = $object->get_upload( $args, $allowed_extensions );		
	//$object->chip_print( $upload_hook );
	//exit;

	/*
	|---------------------------
	| Move File
	|---------------------------
	*/

	if( $upload_hook['upload_move'] == TRUE ) {

		/*
		|---------------------------
		| Any Logic by User
		|---------------------------
		*/

		/*
		|---------------------------
		| Move File
		|---------------------------
		*/

		$upload_output[] = $object->get_upload_move();
		//$object->chip_print( $upload_output );

	} else {

		/*$temp['uploaded_status'] = FALSE;
		$temp['uploaded_file'] = $upload_hook['upload_file']['name'] ;

		$upload_output[] = $temp;*/

	}


} // foreach( $files as $file )


} // if( $_POST )

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" media="all" href="style.css" />
<title>Chip Upload Demo</title>
</head>

<body>

<div id="wrap">
  <div id="wrapdata">
    
    
    <div id="header">
      <div id="headerdata">      
        
        <div class="chipboxw1 chipstyle1">
          <div class="chipboxw1data">          
            <h2 class="margin0">Chip Upload</h2>
          </div>
        </div>
        
            
      </div>
    </div>
    
    <div id="content">
      <div id="contentdata">
        
        <?php if( !empty($upload_output) ): ?>
        <?php
        //$object->chip_print( $upload_output );
	foreach( $upload_output as $val ):
	?>
        <div class="chipboxw1 chipstyle2">
          <div class="chipboxw1data">          
            <h2 class="margin0"><?php 


		include("connect.php");
		$insertpost="INSERT INTO eikones_diadromi(email,path) values('paneos@hotmail.com','images/$val[uploaded_file].$val[uploaded_extension]')";
      mysql_query($insertpost) or die("provlima insert"); 
		echo $val['uploaded_file'] . "." . $val['uploaded_extension'] . " Uploaded"; ?></h2>
          </div>
        </div>
        <?php endforeach; ?>
        <?php endif; ?>
        
        <div class="chipboxw1 chipstyle1">
          <div class="chipboxw1data">          
              <form method="post" action="" enctype="multipart/form-data">
                <p>Upload File 1: <input name="upload_file[]" id="upload_file[]" type="file" class="inputtext" /></p> 
                <p>Upload File 2: <input name="upload_file[]" id="upload_file[]" type="file" class="inputtext" /></p>
                <p>Upload File 3: <input name="upload_file[]" id="upload_file[]" type="file" class="inputtext" /></p>
                <p>Upload File 4: <input name="upload_file[]" id="upload_file[]" type="file" class="inputtext" /></p>
                <p>Upload File 5: <input name="upload_file[]" id="upload_file[]" type="file" class="inputtext" /></p>                 
                <p>Demo Allowed Files: .jpg</p>
                <input type="submit" name="submit" value="Upload File" />
              </form>
          </div>
        </div>
        
      </div>
    </div>
    
     <div id="footer">
      <div id="footerdata">
        
        <div class="chipboxw1 chipstyle1">
          <div class="chipboxw1data">          
            © <a href="http://www.tutorialchip.com/">TutorialChip</a>
          </div>
        </div>
        
      </div>
    </div>
    
  </div>
</div>

</body>
</html>

Thank you in advance

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.