Загрузка нескольких файлов одновременно с Flex - PullRequest
5 голосов
/ 04 февраля 2010

Я работал над загрузчиком Flex, где пользователь может выбрать несколько файлов.

Он отлично работает, когда файлы загружаются в очередь (по одному за раз), однако, как только я пытаюсь загрузить две файлы одновременно, у меня возникают проблемы.

Кажется, что файлы часто блокируются и остаются на уровне 1% до тех пор, пока все остальные файлы не будут загружены, или просто не завершатся совсем. За один раз не может быть загружено более одного файла.

Есть ли проблема с вызовом .upload для нескольких файлов одновременно во Flex?

Ответы [ 5 ]

2 голосов
/ 04 февраля 2010

К сожалению, это ограничение браузера 2 (в зависимости от браузера) активных соединений на хост.Это означает, что одновременно будут активны только 2 загрузки, а остальные будут поставлены в очередь.Теперь это обычно не будет проблемой, но когда загруженные файлы довольно большие, другие загрузки будут задерживаться, даже если они не начались.Есть обходной путь в использовании поддоменов через каждые 2 загрузки (upl1.mydomain.com, upl2.mydomain.com), которые мне не удалось протестировать, но это должно сработать.

Ссылки: http://anirudhs.chaosnet.org/blog/2008.06.17.html и http://www.ajaxperformance.com/2006/12/18/circumventing-browser-connection-limits-for-fun-and-profit/ (на самом деле вы можете получить по первой ссылке).

Кроме того, вы, вероятно, не сможете ставить в очередь загрузки во флэш-памяти, поскольку модель безопасности требует метод загрузки(из FileReference) для вызова в результате щелчка мышью.

0 голосов
/ 27 июля 2010

Создание сценария загрузки в качестве класса загрузки может помочь. Я имею в виду, если ваш сценарий загрузки находится в php или asp, то создайте класс этого сценария так, чтобы каждый запрос соответствовал каждому уникальному объекту, и мы могли загружать файлы одновременно ...

0 голосов
/ 07 июня 2010

Проблема с моделью, в которой Flex подключается к бэкэнду. С помощью HttpService и Remoting клиенты Flex открывают Http-соединение с сервером. Если вы подключаетесь к тому же сервлету / службе на сервере, он будет использовать то же соединение и может столкнуться с проблемами.

Для простого теста попробуйте создать два экземпляра одного сервлета и отправить запросы на загрузку 2 сервлетам для 2 загрузок. Это должно работать.

0 голосов
/ 16 марта 2010

Другим способом симуляции многозадачности является загрузка / выгрузка по частям и использование callLater () для последовательного выполнения.Это будет репликация ранней многозадачной системы Windows

.
0 голосов
/ 04 февраля 2010

У меня нет прямого ответа на ваш вопрос, но на ум приходит загрузчик Gmail. Он использует swfupload (обновлено ссылка ), который является открытым исходным кодом, так что вы, вероятно, сможете понять это из источника.

В этом ответе больше информации .

...