PHP kann Dateiuploads mit jedem RFC-1867 konformen Browser (dazu gehören der Natscape Navigator 3 oder höher, Microsoft Internet Explorer 3 mit Patch von Microsoft oder höher ohne Patch) durchführen. Es können sowohl Text- als auch Binärdaten hochgeladen werden. 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 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.
Eine Maske für den Dateiuplod kann erstellt werden, indem man ein Formular entwirft, was ungefähr so aussieht:
$userfile - Der temporäre Name, unter dem die hochgeladene Datei auf demServer gespeichert wurde.
$userfile_name - Der ursprüngliche Dateiname auf dem System des Absenders.
$userfile_size - Größe der hochgeladenen Datei in Bytes.
$userfile_type - Der Mime-Typ der Datei, wenn dies Information zur Verfügung gestellt wird. Ein Beispiel wäre "image/gif".
Standardmäßig werden Dateien in dem vorgegebenen temporären Verzeichnis des Servers gespeichert. Dies kann durch das Setzen der Umgebungsvariablen TMPDIR direkt in der Umgebung, in der PHP ausgeführt wird, geändert werden. Ein Setzen des temporären Verzeichnisses durch die Funktion putenv() innerhalb eines Skriptes ist nicht möglich.
Das PHP-Skript, dem die hochzuladende Datei übergeben wird, sollte alle nötigen Anweisungen enthalten, die festlegen, wie mit der hochgeladenen Datei verfahren werden soll. Beispielsweise kann die $file_size - Variable verwendet werden, um Dateien auszusortieren, die zu gross oder zu klein sind. Oder man benutzt die $file_type - Variable, um sich aller Dateien zu entledigen, die nicht bestimmten Typen entsprechen. Auf jeden Fall sollte die hochgeladene Datei aus dem temporären Verzeichnis gelöscht oder an andere Stelle verschoben werden.
Die Datei wird aus dem temporären Verzeichnis gelöscht, sobald das Skript abgearbeitet ist, wenn sie nicht verschoben oder umbenannt wurde.