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. –
- 1. HTML5: caricamento file AJAX con barra di avanzamento
- 2. Rilevamento delle dimensioni di caricamento dei file sul lato client?
- 3. Compressione file prima del caricamento sul lato client
- 4. JS isomorfo - solo lato client httpRequest
- 5. File avanzamento del caricamento bar
- 6. Caricamento file framework client RestEasy
- 7. Lato server - Barra di avanzamento
- 8. Reattività solo lato client con Meteor?
- 9. Barra di avanzamento caricamento file utilizzando RestTemplate.postForLocation
- 10. Solo Chrome Caricamento 6 tag audio HTML5
- 11. Caricamento file HTML5 con AngularJS
- 12. Avanzamento caricamento - Richiesta
- 13. Evento HTML5 'avanzamento' non attivo
- 14. Archiviazione query lato client
- 15. Utilizzo di trasformazioni XSLT lato client nell'era HTML5
- 16. Elaborazione delle immagini lato client
- 17. HTML5 Audio - Barra di avanzamento
- 18. module.exports lato client
- 19. Impaginazione lato client con jqGrid
- 20. HTML5 - lato server
- 21. Barra di avanzamento caricamento file Blueimp/Jquery per ogni file
- 22. Lingue lato client
- 23. Come convalidare un ingresso file sul lato client (Javascript)
- 24. XSLT lato client
- 25. Integrazione Validazione lato client
- 26. Rails PDFKit attendere lato client
- 27. Caricamento file DataData HTML5 con RubyOnRails
- 28. Test unitario del caricamento di file HTML5
- 29. Quindi è sicuro convalidare il modulo solo sul lato client?
- 30. Persistenza lato client (archiviazione)
dovresti leggere questo articolo per avere più conoscenza sul fare cose sul lato client, http://www.html5rocks.com/en/tutorials/file/dndfiles/ –