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 "".$this->targetDir."".";
}
else {
$this->errorsArr[] = "Mögliche Dateiupload-Attacke!";
}
}
}
?>