Programmieren lernen | Codebeispiele | Jobbörse | Webentwicklung

PHP 7 | Ein einfacher Fileupload mit PHP

Du bist auf der Suche nach einem Skript für einen Fileupload? Deine Suche ist beendet. Folgend eine sehr gute Lösung.

Das Formular für den Fileupload

Als erste benötigst du ein Standard Formular:

<form action="upload.php" method="post" multipart="" enctype="multipart/form-data">
  <input type="file" name="files">
  <input type="submit">
</form>

Das Skript für den Upload

Wie im Action des Formulars angegeben, muss das Skript in die upload.php.

$file_name = pathinfo($_FILES['files']['name'], PATHINFO_FILENAME);
$file_extension = strtolower(pathinfo($_FILES['files']['name'], PATHINFO_EXTENSION));
$allowed_file_extension = array('zip', 'gzip');
$max_file_size = 1000*1024; // 1MB
$upload_folder = 'uploads/files/'; 
$update_path = $upload_folder.$file_name.'.'.$file_extension;

// Abfragen ob erlaubte Endung
 
if(!in_array($file_extension, $allowed_file_extension)) {
   die('Ungültige Dateiendung');
}

// Abfragen ob Datei zu groß

if($_FILES['files']['size'] > $max_file_size) {
  die('Datei ist zu groß.');
}

// Abfragen ob Datei schon vorhanden, wenn ja Datum anhängen

if(file_exists($update_path)) { 
	$new_name = date('Y-m-d-H-i-s');
	do {
		$update_path = $upload_folder.$file_name.'_'.$new_name.'.'.$file_extension;
	} 
	while(file_exists($update_path));
}

// Wenn alles passt, dann hochladen

move_uploaded_file($_FILES['files']['tmp_name'], $update_path);

echo '<div class="upload-form"><h2>Upload erfolgreich</h2><p><a href="index.php">Neue Datei hochladen</a></div>';

Jetzt nur noch den Ordner „uploads“ erstellen und darin zuerst einen weiteren Ordner „files“ und eine htaccess Datei mit folgendem Inhalt:

Order Deny,Allow
Deny from All

SetHandler none
SetHandler default-handler
Options -ExecCGI
RemoveHandler .php .phtml .php3
RemoveType .php .phtml .php3
php_flag engine off

Das war’s schon! Viel Erfolg.

Getestet mit PHP 7.2

Fertige Skript gibt's auch auf Github

Noch keine Kommentare vorhanden. Sei DU der erste!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.