PHP-Code in upload_files/02_step/class/RawUpload.class.php

<?php
class RawUpload {
	// Zielverzeichnis
	private $targetDir = "";
	// Array für die Fehlermeldungen
	public $errorsArr = [];
	// Array für erlaubte MIME-Types
	private $allowedMimeTypes = ["image/jpeg","image/png","image/gif"];
	// Array für erlaubte Datei-Endungen
	private $allowedExtensions = ["gif","GIF","png","PNG","jpg","JPG","jpeg","JPEG"];
	// max. erlaubte Dateigrösse
	private $maxFileSize;
	// max. erlaubte Dimensionen des Bildes
	private $maxImgWidth = 1200;
	private $maxImgHeight = 800;
	
	// Verarbeite die Fehlermeldungen, die in $_FILES['myFile']['error'] zur Verfügung steht
	function ckeckFileError() {
		$errorNo = $_FILES['myFile']['error'];
		// Überprüfe die Fehlermeldungen mit Hilfe einer switch Anweisung
		// Formuliere die Feedbacks klar und einfach
		// ...
		
		if ($errorNo == 0) {
			return true;
		}
		else {
			return false;
		}
	}
	
	// Mache weitere Checks mit dem File
	function checkFileInQuarantine() {
		$hasErrors = false;
		// ...
		
		if ($hasErrors) {
			return true;
		}
		else {
			return false;
		}
	}
	
	// Verschiebe das File aus dem temp. Verzeichnis in das Zielverzeichnis
	function moveFile() {

		if (is_uploaded_file($_FILES['myFile']['tmp_name'])) {
			$tmp_name = $_FILES["myFile"]["tmp_name"];
			
        	// basename() kann Directory-Traversal-Angriffe verhindern;
        	// weitere Validierung des Dateinamens kann angebracht sein
        	$name = basename($_FILES["myFile"]["name"]);
        	// An dieser Stelle könnte man checken, ob eine Datei mit diesem Namen
        	// bereits im Zielverzeichnis existiert
        	// ...
        	
        	// Schwierig: Verändere den Dateinamen der hochzuladenden Datei, 
        	// falls schon eine Datei mit diesem Namen im Zielverzeichnis existiert
        	// ...
        	
        	move_uploaded_file($tmp_name, $this->targetDir."/".$name);
        	$this->errorsArr[] = "Die Datei ist jetzt im Ordner &quot;".$this->targetDir."&quot;.";
		}
		else {
   			$this->errorsArr[] = "Mögliche Dateiupload-Attacke!";
   		}	
	}
}
?>