eKiwi

Dateiupload mit PHP

n diesem Tutorial wird beschrieben wie Sie mit PHP einen Dateiupload durchführen können. Im ersten Schritt wird ein entsprechendes HTML-Formular erstellt. Anschließend erfolgt die Programmierung des PHP-Scriptes.

Das HTML-Formular

Der erste Schritt besteht darin ein HTML-Formular zu erstellen und in diesem ein Upload-Feld einzubauen. Dies gescheiht indem Sie in das Formular ein Input-Feld vom Typ "file" einfügen:

<form action="php-script.php" method="post" enctype="multipart/form-data">
<p>Wählen Sie eine Datei aus:<br>
<input name="Datei" type="file" size="50">
</p>
<input type="submit" name="Submit" value="Senden">
</form>

Wichtig ist ebenfalls die Angabe "enctype="multipart/form-data" im Form-Tag.

So sieht das Ergebnis aus

Wählen Sie eine Datei aus:

Erstellen des PHP-Scripts

Legen Sie nun eine neue PHP-Datei an, dies ist die Seite auf der das Action-Attribut des Formulars zeigt.

<?php
  if (isset($_FILES['Datei']) and !$_FILES['Datei']['error'] and ($_FILES['Datei']['name'] != '.htaccess'))
  {
     if ($_FILES['Datei']['size'] > 500000) 
     {
          echo "Datei ist zu groß"; 
     }               
     move_uploaded_file($_FILES['Datei']['tmp_name'], "dateiupload/" . $_FILES['Datei']['name']);
     echo "Datei wurde erfolgreich hochgeladen und liegt im Verzeichnis \"Dateiupload\"";

  } else
  {
     echo "Fehler beim Upload der Datei";       
  }
?>

Was passiert hier im einzelnen?

Zugriff auf die hochgeladene Datei erhalten sie über die Variable $_FILES['FeldName']. Sie können auf diese Weise beliebig viele Uploadfelder in Ihr Formular einfügen und auf die Eigenschaften zugreifen. Sie können auf folgende Informationen der Datei zugreifen:

$_FILES['FeldName']['name']     Der ursprüngliche Dateiname auf dem Computer des Benutzers.
$_FILES['FeldName']['type']     Der Mime-Type der Datei, falls der Browser diese 
                                Information zur Verfügung stellt. Ein Beispiel wäre "image/gif".
$_FILES['FeldName']['size']     Die Größe der hochgeladenen Datei in Bytes.
$_FILES['FeldName']['tmp_name'] Der temporäre Dateiname, unter dem die 
                                hochgeladene Datei auf dem Server gespeichert wurde.
$_FILES['FeldName']['error']    Fehlercodes

In Zeile 2 wird zuerst geprüft ob eine Datei übertragen wurde oder ein Fehler auftrat. Ebenfalls wird verhindert das htaccess-Dateien hochgeladen werden können.

In Zeile 4 wird die maximale Dateigröße überprüft, hier können Sie die maximale Dateigröße in Bytes festlegen (1 MB = 1024 KB = 1048576 Byte).

Ist auch diese Überprüfung erfolgreich wird die Datei in das Verzeichnis "dateiupload" verschoben und eine Meldung ausgegeben. Damit dies funktioniert müssen Sie das Verzeichnis vor dem Test des Scriptes auf Ihrem Webspace anlegen und dem Verzeichnis die Rechte 777 zuweisen:

Hinweise

Bedenken Sie, dass Benutzer hier beliebige Dateien hochladen können, wie zum Beispiel Scriptdateien in denen bösartiger Code eingebracht sein kann. Eine Möglichkeit wäre den Upload von bestimmten Dateienden zu überprüfen oder den Zugriff auf das Verzeichnis für den normalen Webbenutzer zu sperren, z.B. mit htaccess.


Copyright Dunkel & Iwer GbR - Alle Rechte vorbehalten