PHP Upload Progress

Die Upload Progress Erweiterung für PHP stellt Funktionen zur Verfügung mit denen der Forschritt beim hochladen von Dateien abgefragt werden kann. Die Erweiterung basiert auf den Arbeiten von Doru Petrescu und Christian Stocker.

Eine aktuelle Version von PHP upload progress steht auf der zentralen Download-Seite zur Verfügung.

Dokumentation

Die Erweiterung stellt eine neue Funktion uploadprogress_get_info zur Verfügung, die innerhalb eines PHP Scripts verwendet werden kann. Diese Funktion erwartet als einzigen Parameter eine ID. Bei dieser ID handelt es sich um einen Schlüssel, der einen upload eindeutig identifiziert. Dieser Schlüssel muss für jeden Upload dynamisch generiert und in einem versteckten Feld hinterlegt werden. Der Name des versteckten Feldes kann über eine Einstellung in der Datei php.ini definiert werden. Das Formular könnte beispielsweise so aussehen.

<form action="/meine/url" enctype="multipart/form-data" method="post"> <input type="hidden" name="<?php echo ini_get( 'uploadprogress.upload_identifier' );?>" value="<?php rand() . time(); ?>" /> <input id="upload" name="upload" size="30" type="file" /> <input type="submit" value="Upload File" /></p> </form>

Nachdem ein solches Formular abgeschickt wurde, kann der Fortschritt des uploads mit Hilfe der Funktion uploadprogress_get_info überwacht werden. Dazu muss derselbe Wert, der in dem oben gezeigten Beispiel als "<?php rand() . time(); ?>" /> übermittelt wurde, an die Funktion übergeben werden. Um das zu bewerkstelligen gibt es mehrere Möglichkeiten, die an dieser Stelle nicht weiter erörtert werden sollen. In der Erweiterung ist ein Beispiel enthalten, das eine dieser Möglichkeiten demonstriert.

Die Funktion liefert ein Feld zurück. In diesem Feld sind die folgenden Informationen gespeichert.

Feldname Beschreibung
bytes_total Anzahl der Bytes die insgesamt hochgeladen werden sollen
bytes_uploaded Anzahl der Bytes doe bisher hochgeladen wurden
speed_average Durchschnittliche Geschwindigkeit mit der hochgeladen wird
est_sec Geschätze verbleibende Zeit bis der upload beendet wird
current_file Name der Datei die derzeit hochgeladen wird

Konfiguration

Die Erweiterung kann mit Hilfe einiger Parameter konfiguriert werden. Die Konfiguration kann in der Datei php.ini (oder in einer der durch sie eingebundenen Dateien) oder in der Konfiguration des Webservers erfolgen. Folgende Parameter werden in der aktuellen Version unterstützt.

Einstellung Typ Standardeinstellung Beschreibung
uploadprogress.filename_template Zeichenkette /tmp/upt_%s.txt Name der Datei in der die Upload-Informationen zwischengespeichert werden
uploadprogress.upload_identifier Zeichenkette UPLOAD_IDENTIFIER Name des versteckten input Feldes (in dem Formular für den Upload) dessen Wert den Upload eindeutig identifiziert
uploadprogress.update_interval Integer 500 Wert der angibt, wie oft der Fortschritt neu berechnet werden soll
uploadprogress.delete_finished Boolean 1 Wenn dieser Wert auf eins gesetzt ist, wird die temporäre Datei mit den Upload-Informationen gelöscht, nachdem der Upload beendet wurde.

Verweise

Als Ausgangspunkt für die Entwicklung der Erweiterung habe ich die folgenden bereits existierenden Lösungen verwendet und angepasst:

eZ Publish™ copyright © 1999-2009 eZ Systems AS