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?
Antworten
Zu viele Anzeigen?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?)
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!