Прогресс загрузки изображения с использованием URLLoader AS3

Я разрабатываю загрузчик изображений во Flash. Я использую FileReference.browse для просмотра изображения, затем изменяю его размер до 1000 x 1000 пикселей, если изображение очень большое, а затем загружаю на сервер. Я хочу показать индикатор выполнения загрузки изображения.

Я использую URLLoader для отправки двоичных данных изображений с измененным размером, но ProgressEvent в URLLoader не работает так, как должен работать. Он запускается только после завершения загрузки изображения, а не показывает промежуточный прогресс. ProgressEvent на FileReference отлично работает, чтобы показать прогресс загрузки промежуточного изображения.

Есть ли способ отобразить прогресс загрузки с помощью URLLoader? или

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


Обновление 1:
Но моя проблема в том, что я изменяю размер просматриваемого изображения после использования FileReference.browse, и я хочу загрузить изображения с измененным размером, а не исходное изображение в объекте FileReference после просмотра. Как мне использовать Filereference.upload в этом случае? Filereference.upload загрузит исходное изображение, а не изображение с измененным размером. Любая идея, как поместить изображение с измененным размером в объект Filereference, а затем использовать FileReference.upload.


Обновление 2:
Невозможно установить данные в фиктивной FileReference, данные доступны только для чтения.


Обновление 3:
Но у этого есть та же проблема, что не отображается прогресс загрузки изображения по указанной выше ссылке:

«К сожалению, возникла проблема с получением события прогресса. Мы не можем показать какой-либо прогресс во время отправки данных на сервер, потому что флэш-память не поддерживает его»

Я как раз ищу решение вышеуказанной проблемы. URLLoader отлично работает для публикации данных изображения.


person Community    schedule 02.10.2009    source источник
comment
Я делаю ТОЧНО то же самое и наткнулся на ту же проблему. Подумываю поставить неточную полосу загрузки, пока идет загрузка.   -  person Danita    schedule 02.12.2010
comment
Учитывая, что в моем случае результирующий файл обычно имеет примерно такой же размер, я закончил настройку таймера с расчетным временем, которое должна занять загрузка в большинстве ситуаций, и получил это таймер для запуска ProgressEvents для обновления индикатора выполнения. Это лучше, чем ничего, и пользователи не заметят разницы.   -  person Danita    schedule 03.12.2010
comment
Вот что я называю «блестящим решением».   -  person Tom    schedule 29.10.2011
comment
Это умно, но совершенно неточно. «В большинстве ситуаций» ничего не значит. Я бы предпочел использовать неопределенный индикатор выполнения вместо того, чтобы лгать пользователю.   -  person citizen conn    schedule 07.06.2012


Ответы (2)


URLLoader настроен таким образом что он НЕ МОЖЕТ получать события прогресса до завершения загрузки, как указано ЗДЕСЬ в документации. Возможно, вы сможете использовать URLStream вместо этого, чтобы получить событие прогресса, как вы, возможно, хотите? Я не уверен, срабатывают ли события прогресса для URLStream только для загрузки ответа сервера или они срабатывают для полной транзакции (загрузка и загрузка), документы, похоже, не указывают точно.

person JStriedl    schedule 08.12.2010
comment
За это дважды проголосовали ... Интересно, пробовал ли кто-нибудь это и подтвердил, отправляет ли URLStream правильные события прогресса? Я читал в другом месте, что это не так, но пока нет окончательного источника ... Ну ладно. - person Cameron; 03.01.2012
comment
Я не вижу в URLStream ничего, что можно было бы использовать для загрузки чего угодно! В документации подробно описывается ЗАГРУЗКА, но нет даже метода загрузки. Не могли бы вы указать, как вы будете использовать его для загрузки файла? - person Yevgeny Simkin; 12.02.2012

Используйте FileReference.upload, именно для этого предназначен этот метод, и у вас будет индикатор прогресса.

person JStriedl    schedule 03.10.2009
comment
Он пытается загрузить не исходный файл, а ByteArray кодировки JPEG результирующего изменения размера исходного файла. - person Danita; 02.12.2010
comment
Хм, мог бы поклясться, что в исходном вопросе это не упоминалось ... да ладно, я репостил новый ответ, который применим к ситуации, представленной в настоящее время. - person JStriedl; 08.12.2010