2009-12-06 3 views

ответ

0

Попробуйте использовать класс URLStream. Он имеет bytesAvailable собственности. Он должен вернуть несколько доступных байтов для загрузки

+0

В большинстве случаев потоковая передача не запускается из-за проблем с политикой безопасности. – Amarghosh

1

Вы не можете сделать это непосредственно через ActionScript. Вам нужно будет сделать запрос на загрузку файла, прежде чем вы сможете получить размер файла. После запроса на загрузку вы можете получить общее количество байтов файла через класс LoaderInfo. Очевидно, что это имеет нежелательную сторону, влияющую на то, что файл продолжает загружаться.

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

У вас может быть какое-то решение на стороне сервера, на которое вы могли бы сделать запросы, чтобы получить размер определенного файла. Или у вас есть настройка для генерации xml для размера файлов всех ваших файлов. Вероятно, существуют многочисленные серверные решения. Поскольку это не моя область знаний, я не могу рекомендовать наилучший подход.

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

+0

Другая проблема с попыткой загрузки заключается в том, что в большинстве случаев запрос будет терпеть неудачу из-за отсутствия файла политики, что тоже имеет смысл. – Amarghosh

+0

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

+0

Если у вас есть доступ к серверу, он должен сделать это на стороне сервера, как вы предложили. Загрузка и отмена его после получения размера файла звучит не очень хорошо. – Amarghosh

-1

спасибо за отзыв, он отлично работает. См. Пример ниже

var httpStream:URLStream = new URLStream(); 
httpStream.load(httpRequest); 

httpStream.addEventListener( Event.COMPLETE, 
       function(e:Event):void{ 
                trace(httpStream.bytesAvailable); 
          }); 
Смежные вопросы