2010-08-30 13 views
9

Per aumentare l'esperienza utente, vorrei avvisare l'utente che il file è troppo grande (diciamo> 8M) prima di inviare l'intero file (che potrebbe richiedere del tempo a causa alla dimensione e alla connessione del client). Tutti i tipi di campi possono essere "pre-validati" sul lato client per una migliore esperienza utente, ma sono bloccato sul problema delle dimensioni del file.Avvisa che un file è troppo grande prima del caricamento

Esiste una soluzione a questo problema?

[modifica] Sono aperto anche ad APC per PHP, che include rfc 1867. Non sono sicuro che sia possibile annullare il caricamento del modulo se rileviamo che la dimensione è troppo grande. Sicuramente assegnerò un premio se qualcuno mi mostrerà come farlo.

risposta

6

Come su questo caricatore basato su Flash? http://swfupload.org/

Questo sembra convincente

  • degrada con grazia alla normalità modulo di upload HTML se Flash o javascript non è disponibile
  • controllo la dimensione del file prima di caricare inizia

Dal momento che è open source se foste interessati si potrebbe combinare la gradevole degradazione con le altre soluzioni HTML5 e IE per coprire la maggior parte delle installazioni del browser: http://code.google.com/p/swfupload/

+1

+1 per SWFUpload. Nonostante la natura del flash (anche se quasi tutti hanno il supporto per Flash ...), questo è l'unico componente ricco e completo che ho trovato qualche anno fa (che è un'applet Java firmata ...) che funziona alla grande e non imporre un'interfaccia utente predefinita. È inoltre necessario aggiungere che SWFUpload ha il monitoraggio dell'avanzamento del caricamento, può selezionare più file contemporaneamente e ha una coda di caricamento con il limite di dimensioni possibili, ecc. –

+0

+1 e funziona in tutti i principali browser e dispone di una vasta gamma di gestori di callback! –

5

È possibile utilizzare l'API file in nuovi browser che non sono IE 9 o precedenti. Ho trovato questo tutorial con qualche Googling: http://www.html5rocks.com/tutorials/file/dndfiles/

Inoltre, il riferimento MDC è qui: https://developer.mozilla.org/en/DOM/File

Purtroppo non credo che ci sia un modo in tutte le versioni di IE. La risposta di Flakron copre 6 e 7 suona, ma non sono sicuro dell'8 e non ho familiarità con l'API di IE. Probabilmente dovresti andare con un uploder basato su plugin (Flash, Silverlight o Java).

+0

I plugin hanno dipendenze "forti". Vorrei evitarlo se possibile.Detto questo, l'uploader Flash non sarebbe una cattiva soluzione (ovviamente con un fallback per un input di file "classico"). – Savageman

+0

In http://www.html5rocks.com/tutorials/file/dndfiles/ è stato introdotto un file demo. Controllato solo e funziona anche con IE10 (Windows7), quindi sembra che questo sia un modo consigliato per le produzioni attuali e in particolare nelle future produzioni. –

1

Esiste una soluzione a questo problema?

Penso che finirai per rimpiangere la scelta di una dimensione "troppo grande" per mettere in guardia, perché la velocità di trasferimento è la vera determinazione della velocità effettiva.

È meglio mostrare semplicemente il tempo di completamento stimato insieme all'opzione di annullamento. Anche un termometro per il progresso è bello. In questo modo, l'utente può decidere se impiegherà troppo tempo, indipendentemente dalla dimensione del file o dalla velocità di connessione, e non dovrai mai tornare indietro e modificare il limite "troppo grande" prescelto quando i caricamenti più recenti si trasformano in compiti minori futuri dovuti all'inevitabile aumento delle prestazioni.

+0

Come sapresti il ​​tempo stimato per il completamento in HTML con un caricamento HTTP? Il server non sa quanto è grande il file fino a quando il browser non ha finito di caricare l'intero file lo fa? –

+0

A meno che non abbia un vero "troppo grande" sul backend. – Joshua

+0

Sì, il controllo HTML di un caricamento HTTP non è una GUI piacevole. Prova http://www.google.com/search?q=upload+progress –

Problemi correlati