Ho notato che il nuovo oggetto XMLHttpRequest supporta un evento "onprogress" in firefox. È possibile utilizzare parte delle nuove API di file HTML5 per ottenere una barra di avanzamento del caricamento senza che siano necessarie modifiche sul lato server?Avanzamento caricamento file HTML5 - lato client solo
risposta
Credo in principio si, anche se non l'ho ancora provato.
Quello che sta per essere un problema è che XMLHttpRequest#send()
prende una stringa Unicode e lo codifica come UTF-8. Non ti dà la possibilità di inviare file binari puri, e la maggior parte dei file binari come le immagini non si presenteranno come sequenze UTF-8 valide.
Quindi probabilmente usereste ciò che la specifica FileAPI chiama una "stringa binaria" (byte trattati come ISO-8859-1, quindi ogni charCodeAt
corrisponde a un byte), ricodificati in UTF-8. Questo sarebbe circa il 50% più grande di un semplice caricamento di file. Vale la pena caricarlo più lentamente per ottenere il rapporto sui progressi?
(Dio, se solo i browser avessero un'interfaccia utente migliore per mostrare come stava andando il caricamento, nessuna delle infinite sciocchezze di scripting/Flash/Java/ActiveX sarebbe mai stata necessaria. Dai, venditori di browser, è un bel grande info popup con una barra di avanzamento davvero troppo da chiedere?)
AFAIK, Chrome mostra l'avanzamento del caricamento in quel piccolo barra di stato sinistra. Non ne sono sicuro, ma penso che Opera mostri anche il progresso del caricamento nella barra di avanzamento. –
Sì, in teoria, anche se dovrei mettere in discussione l'accuratezza in quanto la velocità di Internet generalmente fluttua (più così se non sei cablato). Probabilmente salterebbe molto.
Ancora una volta, cosa è una barra di avanzamento accurata? Mi piacerebbe vederne uno in Windows prima di vederne uno online!
Inoltre: se sei dietro un proxy HTTP che si trova dietro una connessione più lenta, il client avrà finito di inviare tutti i dati prima che il proxy abbia finito di caricarlo sul server remoto. –
dovresti leggere questo articolo per avere più conoscenza sul fare cose sul lato client, http://www.html5rocks.com/en/tutorials/file/dndfiles/ –