Session-Upload-FortschrittWenn die session.upload_progress.enabled Ini-Option aktiviert ist, kann PHP den Upload-Fortschritt der hochgeladenen Dateien verarbeiten. Die von PHP bereitgestellten Daten sind für den eigentlichen Upload-Vorgang nicht nutzbar. Um den Status des Uploads zu verarbeiten, muss die Anwendung eine POST-Anfrage an einen separaten Endpunkt (zum Beispiel via XHR) ausführen. Der Upload-Fortschritt steht in der Superglobalen $_SESSION zur Verfügung, wenn der Upload-Vorgang stattfindet und wenn ein POST-Feld, mit dem in der Ini-Konfiguration session.upload_progress.name hinterlegten Namen enthalten ist. Wenn PHP eine solche POST-Anfrage erkennt, wird ein Array mit Informationen in der $_SESSION hinterlegt. Die Information wird mit dem aus den Ini-Konfigurationen session.upload_progress.prefix und session.upload_progress.name zusammengesetzten Index gespeichert. Der Schlüssel wird dabei typischerweise aus den Ini-Konfigurationen zusammengesetzt, zum Beispiel:
<?php
Es ist auch möglich, den Upload-Vorgang, durch setzen des Session-Wertes
$_SESSION[$key]["cancel_upload"] auf Die Ini-Konfigurationen session.upload_progress.freq und session.upload_progress.min_freq steuern, wie häufig die Upload-Fortschrittsinformationen neu berechnet werden sollen. Mit angemessenen Einstellungen bei diesen zwei Optionen ist der Aufwand für diese Funktion sehr gering.
Beispiel #1 Beispiel-Informationen Beispiel für den Formularaufbau des Upload-Fortschritts. <form action="upload.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" />
<input type="file" name="file1" />
<input type="file" name="file2" />
<input type="submit" />
</form>
Die gespeicherten Daten in der Session sehen wie folgt aus:
<?phpWarnung
In der Anfrage des Servers muss Pufferung deaktiviert sein, damit dies richtig funktioniert. Server wie z.B. Nginx sind bekannt dafür, große Anfragen zu puffern. |