7 Stimmen

HTML5-Datei-Upload-Fortschritt - nur Client-Seite

Ich habe festgestellt, dass das neue XMLHttpRequest-Objekt ein "onprogress"-Ereignis in Firefox unterstützt. Ist es möglich, einen Teil der neuen HTML5 File api's zu nutzen, um eine Upload-Fortschrittsanzeige ohne serverseitige Änderungen zu erhalten?

2voto

bobince Punkte 512550

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

Das Problem wird sein, dass XMLHttpRequest#send() nimmt eine Unicode-Zeichenkette und kodiert sie als UTF-8. Es gibt Ihnen nicht die Möglichkeit, reine Binärdateien zu senden, und die meisten Binärdateien wie Bilder werden nicht zufällig gültige UTF-8-Sequenzen sein.

Wahrscheinlich würden Sie also das verwenden, was in der FileAPI-Spezifikation als "binärer String" bezeichnet wird (Bytes werden als ISO-8859-1 behandelt, so dass jedes charCodeAt entspricht einem Byte), umkodiert in UTF-8. Dies würde zu einer Vergrößerung von etwa 50 % gegenüber einem einfachen Datei-Upload führen. Lohnt sich der langsamere Upload, um den Fortschrittsbericht zu erhalten?

(Gott, wenn die Browser nur eine bessere Benutzeroberfläche hätten, um den Fortschritt des Uploads anzuzeigen, wäre der endlose Skripting/Flash/Java/ActiveX-Unsinn gar nicht nötig gewesen. Kommt schon, Browser-Hersteller, ist ein schönes großes Info-Popup mit einem Fortschrittsbalken wirklich zu viel verlangt?)

0voto

Josh Stodola Punkte 79569

Ja, theoretisch, obwohl ich die Genauigkeit in Frage stellen würde, da die Internetgeschwindigkeit im Allgemeinen schwankt (vor allem, wenn man nicht verkabelt ist). Es würde wahrscheinlich viel herumspringen.

Andererseits, was est einen genauen Fortschrittsbalken? Ich würde gerne einen in Windows sehen, bevor ich einen online sehe!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X