Der ENCTYPE steht für die Art des Übertragunsformats, das bei der Kommunikation zwischen Browser und Server genutzt wird.
application/x-www-form-urlencoded der Standardwert - für die Übertragung großer Datenmengen, die Nicht-ASCII-Zeichen enthalten, weniger geeignet
multipart/form-data" wird z.B. beim File-Upload verwendet
enctype="text/plain" reiner Text / Ausgabe erfolgt an menschliche Wesen
Im einleitenden <form>-Tag die Angabe enctype="multipart/form-data" notieren.
Andernfalls erhalten Sie lediglich den Dateinamen der ausgewählten Datei übermittelt, nicht jedoch die Datei selbst.
Dateiuploads mit POST
Dieses Feature erlaubt es Usern sowohl Text- als auch Binärdaten hochzuladen. Mit PHP's Authentifizierungs- und Dateifunktionen besteht volle Kontrolle darüber, wer Dateien hochladen
darf und was mit den Dateien geschehen soll, wenn der Upload beendet ist.
PHP kann Dateiuploads von jedem RFC-1867 konformen Browser empfangen.
Hinweis: Diesbezügliche Konfigurationshinweise
Siehe auch die Anweisungen file_uploads, upload_max_filesize, upload_tmp_dir, post_max_size und max_input_time in der php.ini
PHP unterstützt auch Dateiuploads nach der PUT-Methode, die beispielsweise vom Netscape Composer und den W3C Amaya Clients benutzt wird. Siehe dazu PUT-Unterstützung für nähere Informationen.
Beispiel #1 Formular zum Hochladen von Dateien
Um Dateieuploads zu ermöglichen muss ein Formular erstellt werden, welches ungefähr wie folgt aussieht:
<!-- Die Encoding-Art enctyoe MUSS wie dargestellt angegeben werden -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
<!-- MAX_FILE_SIZE muss vor dem Dateiupload Input Feld stehen -->
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<!-- Der Name des Input Felds bestimmt den Namen im $_FILES Array -->
Diese Datei hochladen: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
__URL__ im obigen Beispiel sollte durch die URL eines PHP Scripts ersetzt werden.
Das "hidden" Feld MAX_FILE_SIZE muss dem "file" Eingabefeld vorangestellt werden; der angegebene Wert bestimmt die maximale akzeptierte Dateigröße in Bytes. Dieses Formular-Element sollte immer benutzt werden, da es dem Benutzer erspart auf einen großen Dateiupload zu warten, nur um festzustellen, dass die Datei zu groß war und der Upload fehlgeschlagen ist. Es sollte jedoch beachtet werden, dass diese Browser-seitige Einstellung sehr einfach zu umgehen ist und man sich daher niemals darauf verlassen sollte, dass sie übergroße Dateiuploads verhindert. Die Server-seitige Option for die Maximalgröße kann hingegen nicht umgangen werden.
Hinweis:
Das Hochladeformular muss unbedingt das Attribut enctype="multipart/form-data" angeben, andernfalls wird der Upload nicht funktionieren.
Die globale Variable $_FILES existiert seit PHP 4.1.0 (auf älteren Versionen kann $HTTP_POST_FILES verwendet werden) und enthält alle Informationen über hochgeladene Dateien.
Im Folgenden sind die Inhalte von $_FILES für das obige Beispielformular aufgelistet. Beachten Sie, dass dies auf der Annahme basiert, dass der Name des Dateiuploads wie in dem
obigen Beispielskript userfile ist. Es kann aber auch jeder andere Name genutzt werden.
$_FILES['userfile']['name']
Der ursprüngliche Dateiname auf dem Computer des Benutzers.
$_FILES['userfile']['type']
Der Mime-Type der Datei, falls der Browser diese Information zur Verfügung gestellt hat. Ein Beispiel wäre "image/gif". Dieser Mime-Type wird jedoch nicht von PHP geprüft und
kann somit falsch sein.
$_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 des Uploads. Dieses Element wurde in PHP 4.2.0 hinzugefügt.
Standardmäßig werden Dateien in dem standardmäßigen temporären Verzeichnis des Servers gespeichert, außer es wurde mittels upload_tmp_dir in der php.ini ein anderer Ort konfiguriert. Das Standardverzeichnis des Servers kann durch das Setzen der Umgebungsvariablen TMPDIR in der Umgebung, in der PHP ausgeführt wird, geändert werden. Das Setzen mittels der Funktion putenv() innerhalb eines Skriptes ist nicht möglich. Mittels dieser Umgebungsvariable kann auch sichergestellt werden, dass auch andere Operationen an hochgeladenen Dateien arbeiten können.
Quelle: http://php.net/manual/de/features.file-upload.post-method.php