Dateiupload mit PHP

28. Januar 2007

Oft ist er hilfreich, wenn Besucher gleich Dateien auf den Server hochladen können. Dies ist mit PHP sehr einfach zu realisieren.

Das Formular

Als erstes benötigen wir ein einfaches Formular, wo der Besucher die Datei auf seinen lokalen Rechner auswählen kann. Der einzige Unterschied zu normalen HTML-Formularen besteht darin, dass ein Input-Feld mit den Typ “file” verwendet wird sowie dass der Enctype “multipart/form-data” lautet. Der rest ist wie gewohnt.

<form enctype="multipart/form-data" name="upload" method="post" action="<?php echo($_SERVER["PHP_SELF"]); ?>"> 
  <input name="action" type="hidden" value="upload"> 
  <p>Datei: <input name="datei" type="file" size="30"></p>
  <input name="send" type="submit" id="send" value="Hinzuf&uuml;gen">
</form>

Das Hidden-Inputfeld mit dem Namen “Action” und Wert “upload” verwenden wir, um feststellen zu können, wann der PHP-Code zum upload ausgeführt werden soll.

Der Upload-Code

if($_POST["action"] == "upload"] && $_FILES["datei"]["tmp_name"] != "") { 
  copy($_FILES["datei"]["tmp_name"], $_FILES["datei"]["name"]);
}

Zuerst überprüfen wir, ob die Action = upload ist und ob überhaupt eine Datei ausgewählt wurde. Danach kopieren wir die Datei $_FILES["inputfeldname"]["tmp_name"] nach “$_FILES["datei"]["name"]. Diese Variable hat als Wert den ursprünglichen Namen der Datei auf den lokalen Rechner.

Sollte beim Upload ein Fehler auftreten, so kann es sein, dass der Ordner in dem sich das Script befindet die Recht “777″ benötigt.

Weitere nützliche Variablen in Zusammenhang mit dem Dateiupload sind:

$_FILES['userfile']['name']: Der ursprüngliche Dateiname auf der Client Maschine
$_FILES['userfile']['type']: Der Mime-Type der Datei, falls der Browser diese Information zur Verfügung gestellt hat. Ein Beispiel ware “image/gif”
$_FILES['userfile']['size']: Die Größe der hochgeladenen Datei in Bytes.
$_FILES['userfile']['tmp_name']: Der temporäre Dateiname, unter dem die hochgeladene Datei auf dem Server gespeichert wurde.
$_FILES['userfile']['error']: Der Fehlercode im Zusammenhang mit dem hochladen der Datei. ['error'] wurde in PHP 4.2.0 eingeführt.
Mehr Informationen zum Dateiupload findest Du auch in der offiziellen PHP-Dokumentation.

Schreib einen Kommentar

Next post: