2010-02-03 11 views
5

He estado trabajando en un cargador flexible, donde el usuario puede seleccionar varios archivos.Carga de varios archivos simultáneamente con Flex

Funciona bien cuando los archivos se cargan en una cola (uno a la vez), sin embargo, tan pronto como trato de que cargue 2 archivos a la vez, tengo problemas.

Parece que los archivos a menudo se bloquean, y permanecen al 1% hasta que se cargan otros archivos, o simplemente no se completan. Nunca hay más de un archivo cargando a la vez.

¿Hay algún problema con la llamada .upload en varios archivos a la vez en Flex?

+0

check [** here **] (http://bytearray.brixtonjunkies.com/2009/10/01/flex-multiple-file-uploader/), también esto es [** example **] (http://bytearray.brixtonjunkies.com/wp-content/uploads/uploader/FlexUploaderExample.html) –

Respuesta

0

No tengo una respuesta directa a su pregunta, pero me viene a la mente el cargador de gmail. Utiliza swfupload (actualizado link), que es de código abierto, por lo que probablemente pueda averiguarlo desde la fuente.

Hay más información en este número answer.

2

Desafortunadamente, hay una limitación del navegador de 2 (según el navegador) conexiones activas por host. Lo que significa que solo 2 cargas estarán activas a la vez, mientras que la otra se pondrá en cola. Ahora, esto normalmente no sería un problema, pero cuando los archivos cargados son bastante grandes, las otras cargas se agotarán, aunque no se hayan iniciado. Hay una solución en el uso de subdominios cada 2 subidas (upl1.midominio.com, upl2.midominio.com) que no pude probar, pero debería ser el truco.

Referencias: http://anirudhs.chaosnet.org/blog/2008.06.17.html y http://www.ajaxperformance.com/2006/12/18/circumventing-browser-connection-limits-for-fun-and-profit/ (que se puede obtener desde el primer enlace en realidad).

Además, probablemente no podrá poner en cola las cargas en flash, porque el modelo de seguridad requiere que se llame al método de carga (de FileReference) como resultado de un clic del mouse.

+0

Guau, artículos muy interesantes. No sabía que esas restricciones todavía estaban en los navegadores de hoy ... En cuanto a poner archivos en una cola, parece que funciona bien al recorrer una FileReferenceList. – David

+0

Actualización: hice algunas preguntas, y el límite de conexión predeterminado para Firefox 3.0+ es 6. Como he estado usando Firefox 3.5 para probar (y he comprobado dos veces acerca de: config que el límite de conexión es 6) nuevamente no estoy seguro cuál es el problema – David

+0

Sí, la nueva generación de navegadores parece tener un límite máximo de conexión de 6. He cambiado ese número a 8 y no he podido subir más de 4. Tanto en IE como en Firefox, así que estoy pensando que hay un límite adicional en el sistema operativo. Además, inicialmente, en Firefox solo tenía 2 cargas activas con el valor predeterminado de 6. ¿Probablemente un error? –

0

Otra forma de simular la multitarea es descargar/cargar en trozos y usar callLater() para la ejecución secuencial. Eso sería una replicación de la multitarea cooperativa temprana de Windows

0

El problema es con el modelo en el que Flex se conecta al back-end. Con HttpService y Remoting, los clientes Flex abren una conexión Http al servidor. Si se está conectando al mismo Servlet/servicio en el servidor, usará la misma conexión y puede tener problemas.

Para una prueba simple, intente crear dos instancias del mismo servlet y envíe solicitudes de carga a 2 servlets para 2 cargas. Deberia de funcionar.

0

Hacer subir el script como clase de carga puede ayudar ... quiero decir, si su script de carga está en php o asp, haga la clase de ese script para que cada solicitud corresponda a cada objeto único y podamos cargar archivos simultáneamente.

Cuestiones relacionadas