Home

Dateiuploads mit PHP

Dienstag, 1. Mai 2007 | Autor: Pr0g

Das $_FILES Array

Bei einem normalen per post abgeschickten Formular stehen die Daten im globalen $_POST Array zur Verfügung.

Etwas anders ist es bei Input-Feldern vom Typ file. Für dieses wird ein eigenes, globales Array namens $_FILES angelegt, in welchem verschiedenen Informationen über die hochgeladenen Datei gespeichert werden.

Die eigentlichen Daten der Datei werden intern vom Server verarbeitet. Dieser speichert die Datei unter einem zufälligen Namen im tmp-Verzeichnis von PHP. Von dort aus kann die Datei dann an den Zielort verschoben werden. Dazu aber gleich mehr, erstmal der Aufbau des $_FILES Arrays.

Für jedes Inputfeld (es ist möglich mehrere in einem Formular anzugeben) enthält das Array einen Eintrag auf welchen (wie üblich) per Name zugegriffen wird. In unserem Fall wäre das:

$_FILES['meine_datei']

Jeder Eintrag besteht aus einem weiteren Array mit folgenden Feldern:

  • name: Der originale Name der Datei.
  • tmp_name: Der temporäre Dateiname der Datei im tmp-Verzeichns.
  • error: Ein Fehlercode über den Status der hochgeladenen Datei.
  • size: Die Größe der Datei in Bytes.

Als Fehlercode sind in PHP verschiedenen Konstanten definiert, mit welchen der Fehlercode abgefragt werden kann:

  • UPLOAD_ERR_OK: (Wert: 0) Die Datei wurde erfolgreich hochgeladen, es ist kein Fehler aufgetreten.
  • UPLOAD_ERR_INI_SIZE: (Wert: 1) Die Größe der Datei überschreitet das in der php.ini unter upload_max_filesize gesetzte Maximum für hochgeladenen Dateien.
  • UPLOAD_ERR_FORM_SIZE: (Wert: 2) Die Größe der Datei überschreitet die als MAX_FILE_SIZE übermittelte, maximale Größe.
  • UPLOAD_ERR_PARTIAL: (Wert: 3) Die Datei wurde nur teilweise übertragen.
  • UPLOAD_ERR_NO_FILE: (Wert: 4) Es wurde keine Datei hochgeladen.

Neben den Konstanten kann auch der direkte Zahlenwert zum Vergleich genutzt werden, ich halte die Konstanten jedoch für übersichtlicher.

Die PHP Einstellung upload_max_filesize kann mit Hilfe der Funktion ini_get() ausgelesen werden:

<?php
echo 'Maximale Dateigröße: ' ini_get('upload_max_filesize') . 'Bytes';
?>

Der Wert ist normalerweise in Bytes angegeben. Ab PHP 5.1.0 kann auch eine Kurzform gesetzt sein. Dabei wird dem Wert ein K (für Kilobyte), M (für Megabyte) oder G (für Gigabyte) angehangen. Da PHP die Größenprüfung jedoch automatisch erledigt müssen wir uns nicht weiter darum kümmern.

Seiten: 1 2 3 4 5 6 7 8

Tags » , , «

Trackback: Trackback-URL | Feed zum Beitrag: RSS 2.0
Thema: Artikel

Diesen Beitrag kommentieren.

Kommentar abgeben