У меня есть ситуация в веб-приложении Flex, где мы используем веб-сервис PHP для поиска, чтения содержимого, а затем отправки данных в кодировке Base64 обратно в приложение Flex как часть XML-документа. Приложение Flex должно затем извлечь, Base64 декодировать байтовый поток, а затем отправить его НЕПОСРЕДСТВЕННО пользователю браузера (для загрузки) без записи файла на диск.
Все это должно происходить, например, при нажатии кнопки «СКАЧАТЬ СЕЙЧАС».
Я искал, но все, что я нашел, - это примеры либо загрузки с URL-адреса, либо фактической записи байтового потока на диск, чего я не хочу.
Мне нужно отправить поток прямо в браузер. Таким образом, я могу защитить файлы на сервере, находясь за пределами веб-пространства, а не в открытом доступе.
Кто-нибудь может помочь?
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, а все остальное обрабатывает браузер.
Похожие вопросы
Новые вопросы
file
Блок произвольной информации или ресурс для хранения информации, доступный по строковому имени или пути. Файлы доступны для компьютерных программ и обычно основаны на постоянном хранилище.