molily: Upload: Fortschrittsbalken anzeigen

Beitrag lesen

Hallo Chris,

Ja genau sowas meine ich. Ich habe mir dieses Script bereits angeschaut. Das Problem ist, dass es nicht funktioniert wenn ich ein FTP-Upload machen will bzw. per Submit-Button eine neue Datei aufrufe (was relativ lange dauert, da ja eben zuerst die Datei hochgeladen wird). Gibt es vielleicht irgend eine Lösung wie ich den Statusbalken (unten rechts im Internet Explorer) in mein Script integrieren, d.h. z.B in einem PopUp-Fenster anzeigen kann?

Das ist naturgemäß unmöglich, da das Script erst gestartet wird, wenn der Request beendet ist. Der Browser liest nach dem Absenden des Formulars die Dateien, kodiert sie und sendet dann den Request, was einige Zeit dauert. Nachdem diese Anfrage des Clients komplett gesendet wurde, macht sich der Webserver daran, die Antwort zu senden. Das bedeutet zunächst, dass er im lokalen Dateisystem das Script findet und den Script-Interpreter mit den jeweiligen Parametern startet (beziehungsweise das Webserver-Modul). Die POST-Anfragedaten werden dem Interpreter zur Verfügung gestellt, und beim Initialisieren des Interpreters werden diese Daten auch erst als Dateien in eine temporärer Verzeichnis gelegt, aus welchem sie dann vom Script kopiert werden können.

An keiner Stelle dieses Ablauf kann nachträglich clientseitig oder serverseitig ein Status des Requests gemessen werden - das heißt, der Browser könnte es, da er die Requestgröße kennt und anhand der momentanen Übertragungsgeschwindigkeit feststellen könnte, wie lange das Senden des Requests noch dauern wird. Aber die von dir angesprochene Status-Ladeleiste ist bei solchen Anwendungen in der Regel nutzlos, da nicht berechnet wird, wieviel Prozent des Requests schon gesendet wurden - zumindest habe ich diese Erfahrung mit MSIE gemacht, Mozilla zeigt auch für das Senden des Requests eine Fortschrittsleiste an, welche nach dem besagten Mechanismus zu rechnen scheint. Opera zählt die übertragenen Daten und zeigt die momentane Geschwindigkeit an, es wird auch explizit »Uploading file(s) to server« angezeigt, aber es wird nicht berechnet, wieviel Prozent vom Gesamtrequest schon gesendet wurden. Wie auch immer, du wirst diesen Mechanismus nicht mittels JavaScript oder einer serverseitigen Sprache nachbauen können, da es rein auf der HTTP-Ebene abläuft.

Wie das ASP-Script arbeitet, weiß ich nicht. Bei mir funktioniert es nicht. Vielleicht arbeitet es mit dem Webserver zusammen, welcher das Script schon startet, während der Körper des Requests noch gesendet wird. Oben habe ich beschrieben, wie es in PHP und meines Wissens auch in Perl funktioniert.

Grüße,
Mathias