2010-02-03 12 views
5

Ho lavorato a un uploader flessibile, in cui l'utente può selezionare più file.Caricamento di più file contemporaneamente con Flex

Funziona bene quando i file vengono caricati in una coda (uno alla volta), tuttavia non appena provo a farlo caricare 2 file contemporaneamente mi imbatto in problemi.

Sembra che i file si blocchino spesso e restino all'1% fino a quando non vengono caricati tutti gli altri file o semplicemente non vengono completati affatto. Non c'è mai più di un caricamento di file alla volta.

C'è qualche problema nel chiamare .upload su più file contemporaneamente in Flex?

+0

controllare [** qui **] (http://bytearray.brixtonjunkies.com/2009/10/01/flex-multiple-file-uploader/), anche questo è [** esempio **] (http://bytearray.brixtonjunkies.com/wp-content/uploads/uploader/FlexUploaderExample.html) –

risposta

0

Non ho una risposta diretta alla domanda, ma mi viene in mente l'uploader di Gmail. Utilizza swfupload (aggiornato link), che è open source, quindi è probabile che lo si possa capire dalla fonte.

C'è più informazioni in questo answer.

2

Sfortunatamente è una limitazione del browser di 2 (in base al browser) connessioni attive per host. Significato solo 2 caricamenti saranno attivi alla volta, mentre l'altro sarà messo in coda. Questo normalmente non sarebbe un problema, ma quando i file caricati sono piuttosto grandi, gli altri caricamenti scadranno, anche se non sono stati avviati. C'è una soluzione alternativa nell'utilizzare i sottodomini ogni 2 caricamenti (upl1.mydomain.com, upl2.mydomain.com) che non ho potuto testare ma dovrebbe fare il trucco.

Riferimenti: http://anirudhs.chaosnet.org/blog/2008.06.17.html e http://www.ajaxperformance.com/2006/12/18/circumventing-browser-connection-limits-for-fun-and-profit/ (che è possibile ottenere dal primo collegamento).

Inoltre, probabilmente non sarà possibile accodare i caricamenti in flash, perché il modello di sicurezza richiede che il metodo di caricamento (del FileReference) venga chiamato come risultato di un clic del mouse.

+0

Wow, articoli molto interessanti. Non sapevo che tali restrizioni fossero ancora sui browser oggi ... Per quanto riguarda il mettere i file in una coda, questo sembra funzionare bene scorrendo attraverso una FileReferenceList. Aggiornamento – David

+0

: ho fatto alcuni spunti e il limite di connessione predefinito per Firefox 3.0+ è 6. Dato che ho usato Firefox 3.5 per i test (e ho verificato due volte: config che il limite di connessione è 6) Non sono ancora sicuro qual è il problema – David

+0

Sì, la nuova generazione di browser sembra avere un limite massimo di connessione di 6. Ho cambiato quel numero in 8 e non sono riuscito a caricare più di 4. Sia su IE che su Firefox, quindi penso che ci sia un ulteriore limite sul sistema operativo. Inoltre, inizialmente, su Firefox avevo solo 2 caricamenti attivi con il valore predefinito di 6. Probabilmente un bug? –

0

Un altro modo per simulare il multitasking è scaricare/caricare da blocchi e utilizzare callLater() per l'esecuzione sequenziale. Questa sarebbe una replica del multitasking cooperativo di Windows iniziale

0

Il problema è con il modello in cui Flex si connette al back-end. Con HttpService e Remoting, i client Flex aprono una connessione Http al server. Se ci si connette allo stesso Servlet/servizio sul server, utilizzerà la stessa connessione e può incorrere in problemi.

Per un semplice test, provare a creare due istanze dello stesso servlet e inviare richieste di caricamento a 2 servlet per 2 caricamenti. Dovrebbe funzionare.

0

Fare lo script di caricamento come classe di caricamento può aiutare .. Voglio dire se il tuo script di caricamento è in php o asp, quindi crea la classe di tale script in modo che ogni richiesta corrisponda a ciascun oggetto univoco e possiamo caricare i file contemporaneamente ..

Problemi correlati