2010-07-12 7 views
7

Ich habe festgestellt, dass das neue XMLHttpRequest-Objekt ein "onprogress" -Ereignis in Firefox unterstützt. Ist es möglich, einen Teil der neuen HTML5-Datei-APIs zu verwenden, um einen Upload-Fortschrittsbalken zu erhalten, ohne dass serverseitige Änderungen erforderlich sind?HTML5-Datei-Upload-Fortschritt - nur Client-Seite

+0

sollten Sie diesen Artikel lesen, um mehr über die Dinge auf der Client-Seite zu erfahren, http://www.html5rocks.com/en/tutorials/file/dndfiles/ –

Antwort

2

Ich glaube im Prinzip ja, obwohl ich es noch nicht ausprobiert habe.

Was ist ein Problem ist, dass XMLHttpRequest#send() eine Unicode-Zeichenfolge und codiert es als UTF-8. Es gibt Ihnen nicht die Möglichkeit, reine Binärdateien zu senden, und die meisten binären Dateien wie Bilder werden keine gültigen UTF-8-Sequenzen sein.

Also wahrscheinlich würden Sie verwenden, was die FileAPI-Spezifikation eine "binary string" (Bytes als ISO-8859-1 behandelt, so entspricht jeder charCodeAt entspricht einem Byte), codiert UTF-8. Dies würde etwa 50% größer sein als bei einem einfachen Datei-Upload. Lohnt sich das langsamere Hochladen, um den Fortschrittsbericht zu erhalten?

(Gott, wenn nur Browser eine bessere Benutzeroberfläche haben, um zu zeigen, wie der Upload lief, wäre keiner der endlosen Scripting/Flash/Java/ActiveX-Unsinn jemals notwendig gewesen. Komm, Browser-Anbieter, ist eine schöne große Info Popup mit einem Fortschrittsbalken wirklich zu viel verlangt?)

+1

AFAIK, Chrome zeigt den Upload-Fortschritt bei dieser kleinen Boden- linke Statusleiste Ich bin mir nicht ganz sicher, aber ich denke, Opera zeigt auch den Upload-Fortschritt in der Statusleiste an. –

0

Ja, in der Theorie, obwohl ich die Genauigkeit seit Internetgeschwindigkeit im Allgemeinen schwanken müsste (mehr, wenn Sie nicht verdrahtet sind). Es würde wahrscheinlich viel herumspringen.

Dann wieder, was ist ein genauer Fortschrittsbalken? Ich würde gerne einen in Windows sehen, bevor ich einen online sehe!

+0

Wenn Sie sich hinter einem HTTP-Proxy befinden, der sich hinter einer langsameren Verbindung befindet, hat der Client alle Daten gesendet, bevor der Proxy den Upload auf den Remote-Server beendet hat. –

Verwandte Themen