POST ($_FILES)

Ebenso wie andere Benutzereingaben, kann auch eine Datei mit einem HTML-Formular versendet werden. Allerdings muss dies dem Formular mitgeteilt werden (enctype).

<?PHP
echo  '<form  method="post"  action="index.php"
          enctype="multipart/form-data">'
;
echo 
'<input  type="file"  name="datei"  size="42"  />';
echo 
'<input  type="submit"  name="submit"  value="abschicken"  />';
echo 
'</form>';
?>

Nun kann der Nutzer eine Datei auswählen und versenden. Der Server nimmt diese entgegen, und speichert sie in einem temporären Bereich. Alle Informationen zu der Datei liefert PHP nicht wie gewohnt in dem Array "$_POST", sondern in "$_FILES". Und so sieht er nach dem versenden aus:

Array
(
    [datei] => Array
        (
            [name] => Foto.JPG
            [type] => image/jpeg
            [tmp_name] => /tmp/phponnNRM
            [error] => 0
            [size] => 1973343
        )

)

Welche Informationen bekommen wir nun?

  • name
    Der originale Name der Datei
     
  • type
    Der MIME-Typ, also was für eine Art Datei das ist.
    ACHTUNG: Muss nicht stimmen.
     
  • tmp_name
    Pfad und Dateiname worunter der Webserver sie gespeichert hat.
     
  • error
    Falls es zu Fehlern kam, wird hier eine Zahl größer 0 stehen.
     
  • size
    Die Dateigröße in Bytes

Das war es auch schon. Die Datei liegt für unser Programm nun in Reichweite, und eine Weiterverarbeitung ist möglich.

Upload-Grenzen

In der PHP-Konfiguration ist festgelegt, wie groß die Dateien sein dürfen. Sollten sie größer sein, werden sie nicht angenommen. Folgende Konfigurationswerte sind interessant.

  • file_uploads
    Bestimmt ob überhaupt Dateien hochgeladen werden dürfen.
     
  • post_max_size
    Maximales Datenvolumen welches mit einem Formular erlaubt ist (also alle Dateien und Texte zusammen).
     
  • post_max_filesize
    Maximale Größe die eine einzelne Datei haben darf.

Deine PHP-Konfiguration kannst Du Dir mit Hilfe der Funktion "phpinfo()" ausgeben lassen. Um sich einen einzelnen Wert in den Konfiguration anzuschauen, gibt es die Funktion "ini_get()".

<?PHP

echo  'post_max_size  =  ';
echo 
ini_get('post_max_size');

?>