Scripts

Upload Class

Dit is een erg hippe (of niet) uploadclass die zowat alles kan. Helaas pindakaas moeten jullie er wel nog een programmatje rondschrijven, maar dat kunnen jullie wel, niet ? Veel plezier er mee :)

upload-class
<?php

/********************
     CLASS UPLOAD
*********************/
class upload {
	
	// Zet variablen vast
	var $maxkb = "2000"; // Het maximum aantal kilobytes dat het bestand mag bevatten
	var $directory = "uploads/"; // De map waar bestanden naar worden geupload
	var $extensies = ".jpg|.bmp|.gif|.png|.ico"; // De toegelaten extensies, met punt erbij en gescheiden door een pipe (|), star (*) om alles toe te laten
	
	// functie changename, zal de naam veranderen als de naam van het bestand al bestaat
	function changename($bestand) {
		// De naam veranderen
		if(file_exists($this->directory.$bestand)) { // als het bestand bestaat
			$bestand2=$bestand; // een extra backup maken
			$i=0; // geef dan een teller
			while(file_exists($this->directory.$bestand)) { // zolang er geen goede naam is gevonden
				$bestand=$i." ".$bestand2; // geef het bestand een nieuwe naam 
				$i++; // de teller updaten, anders krijgen we iets on-eind-igs.
			}
			return $bestand; // geef het resultaat door
		}
		else { // als er nog geen bestand met die naam bestaat
			return $bestand; // geef dan de originele naam weer 
		}
	}
	
	// functie upload, load alle bestanden op
	function fileupload($bestand,$locatie) {
		if(is_uploaded_file($bestand['tmp_name'])) { // Is het bestand upgeload ?
			if(move_uploaded_file($bestand['tmp_name'],$this->directory.$locatie."/".$this->changename($bestand['name']))) { // Is het bestand verplaatst ?
				return true; // Geef true weer, het bestand is verplaatst
			}
			else {
				return false; // Geef false weer, het bestand is niet verplaatst
			}
		}
		else {
			return false; // Geef false weer, het bestand is niet upgeload
		}
	}
	
	// functie k(ilo)b(ytes)to( )b(ytes), zet megabytes om in bytes
	function kbtob($waarde) {
		$bytes = $waarde*1024; // zet om in kilobytes
		$bytes = ceil($bytes);
		return $bytes; // geef de afgeronde waarde weer
	}
	
	// functie checksize, controleer de grootte van het bestand
	function checksize($bestand) {
		if($bestand['size'] < $this->kbtob($this->maxkb)) { // Als het bestand kleiner is dan de maximum grootte
			return true; // Geef dan true weer
		}
		else { // en anders
			return false; // Geef false weer
		}
	}
	
	// functie checkext, controleer de extesie van het bestand
	function checkext($bestand) {
		if($this->extensies == "*") { // als alles is toegelaten
			return true; // geef dan true weer
		}
		else { // als niet alles is toegelaten
			if(eregi("((".$this->extensies.")$)",strtolower($bestand['name']))) { // als de extensie overeenkomt met de opgegeven mogelijkheden
				return true; // geef dan true weer
			}
			else { // Komt de opgegeven extensie niet overeen
				return false; // Geef dan false weer
			}
		}
	}
		
	// functie loadup, main functie, laad alles mooi op in de map
	function loadup($bestand,$locatie) {
		if($this->checksize($bestand) == true) { // controleer de grootte van het bestand
			if($this->checkext($bestand) == true) { // controleer de extensie van het bestand
				if($this->fileupload($bestand,$locatie) == true) {
					echo "Het bestand ".$bestand['name']." is succesvol upgeload.<br>";
				}
				else {
					echo "Het bestand ".$bestand['name']." is niet correct upgeload.<br>";
				}
			}
			else { // De extensie is niet correct
				echo "Het type bestand dat je probeerde op te loaden is niet toegelaten. (".$bestand['name'].")<br>"; // Geef een error
			}
		}
		else { // Het bestand is te groot
			echo "Het bestand dat je probeerde op te loaden is te groot.(".$bestand['name'].")<br>"; // Geef error
		}
	}
	
}




/********************
  CLASS dirandfiles
*********************/

class dirandfiles extends upload {
	// function replace - Verplaats bestand (of - rename bestand)
	function replace($oudenaam, $nieuwenaam) {
		if(file_exists($this->directory.$oudenaam)) { // als de oude naam bestaat, ga door
			if(!file_exists($this->directory.$nieuwenaam)) { // als de nieuwe naam nog niet bestaat, ga door
				if(copy($this->directory.$oudenaam,$this->directory.$nieuwenaam)) { // als het succesvol is gecopieerd
					unlink($this->directory.$oudenaam); // verwijder dan de nieuwe naam
				}
				else { // als het niet opnieuw is genaamt
					return false; // geef dan false weer
				}
			}
			else { // als de nieuwe naam al bestaat
				return false; // geef dan false weer
			}
		}
		else { // als de oude map niet bestaat
			return false; // geef dan false weer
		}
	}
	
	// function rename_dir - geef een map een nieuwe naam
	function rename_dir($oudenaam, $nieuwenaam, $locatie) {
		if(is_dir($this->directory.$locatie.$oudenaam)) { // als de oude naam bestaat
			if(!is_dir($this->directory.$locatie.$nieuwenaam)) { // als de nieuwe naam nog niet bestaat
				if(rename($this->directory.$locatie.$oudenaam, $this->directory.$locatie.$nieuwenaam)) { // geef de map een nieuwe naam
					return true; // geef dan true weer
				}
				else { // als de map niet is gerenamed
					return false; // geef dan false weer
				}
			}
			else { // als de nieuwe map al bestaat
				return false; // geef dan false weer
			}
		}
		else { // als de oude naam niet bestaat
			return false; // geef dan false weer.
		}
	}
	
	// create_dir - maak een map aan in een map
	function create_dir($naam,$locatie) {
		if(!is_dir($naam)) { // als de map nog niet bestaat
			if(mkdir($this->directory.$locatie.$naam)) { // Als de map succesvol is gemaakt
				return true; // geef dan true weer
			}
			else { // als de map niet correct is gemaakt
				return false; // geef dan false weer
			}
		}
		else { // als de map al bestaat
			return false; // Geef dan false weer
		}
	}
	
	// functie delete_file - verwijder een file of map
	function delete_file($bestand) {
		if(file_exists($this->directory.$bestand)) { // als het bestand bestaat (je kunt niets verwijderen dat niet bestaat)
			if(unlink($this->directory.$bestand)) {
				return true;
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
	
	// Functie delete_dir - verwijder een map
	function delete_dir($dir) {
		if(is_dir($this->directory.$dir)) {
			$handle=opendir($this->directory.$dir); 
			while (false!==($file = readdir($handle))) { 
    			if ($file != "." && $file != "..") { 
        			unlink($this->directory.$dir."/".$file);
    			} 
			}			
			closedir($handle); 
			rmdir($this->directory.$dir);
		}
	}
}

?>

Reacties

0
Nog geen reacties.