2010-02-03 9 views
5

Ich habe an einem Flex-Uploader gearbeitet, bei dem der Benutzer mehrere Dateien auswählen kann.Mehrere Dateien gleichzeitig mit Flex hochladen

Es funktioniert gut, wenn die Dateien in einer Warteschlange (einzeln) hochgeladen werden, aber sobald ich versuche, 2 Dateien auf einmal zu laden, stoße ich auf Probleme.

Es scheint, dass Dateien häufig gesperrt werden und entweder bei 1% bleiben, bis jede andere Datei hochgeladen wird, oder einfach nicht vollständig. Es kann nie mehr als eine Datei gleichzeitig hochgeladen werden.

Gibt es ein Problem mit dem Aufrufen von .upload für mehrere Dateien gleichzeitig in Flex?

+0

überprüfen Sie [** hier **] (http://bytearray.brixtonjunkies.com/2009/10/01/flex-multiple-file-uploader/), auch das ist [** Beispiel **] (http://bytearray.brixtonjunkies.com/wp-content/uploads/uploader/FlexUploaderExample.html) –

Antwort

0

Ich habe keine direkte Antwort auf Ihre Frage, aber die Gmail-Uploader in den Sinn kommt. Es verwendet swfupload (aktualisiert link), die Open Source ist, so dass Sie wahrscheinlich herausfinden können, aus der Quelle.

Es gibt weitere Informationen in diesem answer.

2

Leider ist es eine Browserbeschränkung von 2 (je nach Browser) aktiven Verbindungen pro Host. Das bedeutet, dass nur 2 Uploads gleichzeitig aktiv sind, während die anderen in die Warteschlange gestellt werden. Das wäre normalerweise kein Problem, aber wenn die hochgeladenen Dateien ziemlich groß sind, werden die anderen hochgeladen, obwohl sie nicht gestartet wurden. Es gibt einen Workaround bei der Verwendung von Subdomains bei zwei Uploads (upl1.mydomain.com, upl2.mydomain.com), die ich nicht testen konnte, aber es sollte den Trick machen.

Referenzen: http://anirudhs.chaosnet.org/blog/2008.06.17.html und http://www.ajaxperformance.com/2006/12/18/circumventing-browser-connection-limits-for-fun-and-profit/ (die Sie tatsächlich von der ersten Verbindung erhalten können).

Außerdem können Sie die Uploads in Flash wahrscheinlich nicht in die Warteschlange stellen, da das Sicherheitsmodell die Upload-Methode (der FileReference) erfordert, die als Ergebnis eines Mausklicks aufgerufen wird.

+0

Wow, sehr interessante Artikel. Ich wusste nicht, dass solche Einschränkungen heute noch auf Browsern liegen ... Was das Einreihen von Dateien in eine Warteschlange betrifft, so scheint dies gut zu funktionieren, wenn man eine FileReferenceList durchläuft. – David

+0

Update: Ich habe herumgestochert, und das Standardverbindungslimit für Firefox 3.0+ ist 6. Da ich Firefox 3.5 zum Testen benutzt habe (und ich habe in config überprüft, dass das Verbindungslimit 6 ist), bin ich wieder nicht sicher Was ist das Problem? – David

+0

Ja, die neue Generation von Browsern scheint ein maximales Verbindungslimit von 6 zu haben. Ich habe diese Zahl auf 8 geändert und konnte nicht mehr als 4 hochladen. Sowohl bei IE als auch bei Firefox, also denke ich, dass es ein weiteres Limit für das Betriebssystem. Außerdem hatte ich anfänglich bei Firefox nur 2 Uploads mit dem Standardwert von 6. Wahrscheinlich ein Bug? –

0

Eine weitere Möglichkeit zum Simulieren von Multitasking ist das Herunterladen/Hochladen von Chunks und die Verwendung von callLater() für die sequenzielle Ausführung. Das wäre eine Replikation von früher Windows kooperative Multitasking

0

Das Problem ist mit dem Modell, in dem Flex mit dem Back-End verbindet. Mit HttpService und Remoting öffnen Flex-Clients eine HTTP-Verbindung zum Server. Wenn Sie sich mit demselben Servlet/Service auf dem Server verbinden, wird dieselbe Verbindung verwendet und es können Probleme auftreten.

Versuchen Sie für einen einfachen Test, zwei Instanzen desselben Servlets zu erstellen und Upload-Anforderungen für 2 Uploads an 2 Servlets zu senden. Es sollte funktionieren.

0

Das Upload-Skript als Upload-Klasse kann helfen .. ich meine, wenn Ihr Upload-Skript in PHP oder ASP ist dann machen Sie die Klasse dieses Skript, so dass jede Anfrage entspricht jedem einzelnen Objekt und wir können Dateien gleichzeitig hochladen .. .