2013-09-16 3 views
0

У меня есть ситуация в веб-приложении Flex, где мы используем веб-сервис PHP для поиска, чтения содержимого и отправки данных с кодировкой Base64 обратно в приложение Flex как часть XML-документа . Затем приложение Flex должно извлечь, Base64 декодирует поток байтов, а затем отправляет его прямо к пользователю браузера (для загрузки), не записывая файл на диск.Инициировать загрузку файла из байтового потока в Flex

Это все должно происходить при нажатии кнопки «ЗАГРУЗИТЬ СЕЙЧАС», например.

Я искал, но все, что я нашел, - это примеры загрузки из URL-адреса или фактического написания байтового потока на диск, который я не хочу.

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

Может ли кто-нибудь помочь?

+0

Я не понимаю ваш вопрос или проблему. Не является ли загрузка URL-адреса «отправкой потока байтов непосредственно в браузер»? Чтобы отправить «браузер без доступа к веб-сайту» в браузер, вам придется написать некоторый код на стороне сервера - доступный в Интернете - загрузить файл и передать обратно байты. В зависимости от типа файла нет гарантии, что файл будет отображаться в браузере. Это зависит от типа файла и настроек браузера. Например, если мой браузер загружает PDF, я получаю возможность «открывать» или «сохранять», потому что именно так настроен мой браузер. – JeffryHouser

ответ

1

Вы можете поместить ByteArray в загрузчик, а затем использовать FileReference, чтобы начать диалог загрузки.

var file:FileReference = new FileReference(); 
var loader:Loader = new Loader(); 
//put loader in binary mode 
loader.dataFormat = URLLoaderDataFormat.BINARY; 
loader.addEventListener(Event.COMPLETE, loader_completeHandler); 

//I will assume you are getting an appropriate ByteArray from your stream 
var data:ByteArray = new ByteArray(); 
loader.loadBytes(data); 

private function loader_completeHandler(evt:Event):void { 
    //now pop a save window 
    file.save(loader.data,"default_file_name.png") 
} 

редактировать

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

+0

Спасибо. Это очень помогло! –

Смежные вопросы