Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Загрузка FileReferens'ом сгенерированного на сервере файла. (http://www.flasher.ru/forum/showthread.php?t=130620)

Fatality 30.09.2009 11:39

Загрузка FileReferens'ом сгенерированного на сервере файла.
 
Здравствуйте. Не могли бы вы помочь мне решить небольшую проблему. Дело в том что мне необходимо загрузить динамически сгенерированный на сервере файл. Загружаю FileReferens'ом.
Код AS3:

package {
        import flash.events.HTTPStatusEvent;
        import flash.events.IOErrorEvent;
        import flash.events.MouseEvent;
        import flash.events.SecurityErrorEvent;
        import flash.net.FileReference;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLRequest;
        import flash.text.TextField;
 
        public class Main extends Sprite {
 
                private const URL:String = "http://www.***.com/cgi/hc/samples.cgi?type_id=4&which_issue=1&user_id=1221120&lang=ru";
                private var url_request:URLRequest;
                private var file_fr:FileReference;
                private var log_txt:TextField;
 
                public function Main():void {
                        this.url_request = new URLRequest(this.URL);
                        this.file_fr = new FileReference();
                        this.log_txt = new TextField();
                        this.log_txt.width = stage.stageWidth;
                        this.addChild(this.log_txt);
                        this.file_fr.addEventListener(Event.SELECT, fileSelectHandler);
                        this.file_fr.addEventListener(Event.COMPLETE, fileCompleteHandler);
                        this.file_fr.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
                        this.file_fr.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
                        this.file_fr.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
                        stage.addEventListener(MouseEvent.CLICK, stageClickHandler);               
                }
 
                private function fileSelectHandler(e:Event = null):void {
                        var file:FileReference = e.target as FileReference;
                        this.log_txt.appendText("SELECTED");
                }
                private function fileCompleteHandler(e:Event = null):void {
                        var file:FileReference = e.target as FileReference;
                        this.log_txt.appendText("\nCOMPLETED");
                }
                private function ioErrorHandler(e:IOErrorEvent = null):void {
                        this.log_txt.appendText("\n" + e.type);
                }
                private function httpStatusHandler(e:HTTPStatusEvent = null):void {
                        this.log_txt.appendText("\n" + e.type);
                }
                private function securityErrorHandler(e:SecurityErrorEvent = null):void {
                        this.log_txt.appendText("\n" + e.type);
                }
                private function stageClickHandler(e:MouseEvent = null):void {
                        this.file_fr.download(this.url_request);
                }
        }       
}

И все бы хорошо, но при вызове метода download(), диалоговое окно предлагает сохранить samples.cgi, тогда как на самом деле сервер генерирует .rar архив на основе данных из переменных окружения. При открытии ссылки браузером все работает корректно, предлагает скачать .rar файл. Может кто сталкивался с подобной проблемой и знает решение ?

P.S я знаю что CGI лет десять как устарел, но вдолбить это нашим серверным программистам не получится.

kackbip 30.09.2009 14:27

download(request:URLRequest, defaultFileName:String = null):void

Используйте параметр defaultFileName

gloomyBrain 30.09.2009 14:31

Код AS3:

this.file_fr.download(this.url_request, "ИМЯ ФАЙЛА ДЛЯ СОХРАНЕНИЯ");


Fatality 30.09.2009 14:48

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

kackbip 30.09.2009 16:02

тогда сначала спрашивайте у сервера имя файла, а потом вызывайте download и вставляйте туда defaultFileName тот, что вам дал сервер.

Fatality 30.09.2009 17:41

Цитата:

тогда сначала спрашивайте у сервера имя файла, а потом вызывайте download и вставляйте туда defaultFileName тот, что вам дал сервер.
Да, видимо придется отписывать нашим серврникам... Жаль, думал есть способы обойти этот баг.

kackbip 01.10.2009 06:45

Да это же не баг... Окошко сохранения появляется до запроса файла. Так что флэш просто не знает имени файла, который БУДЕТ сгенерирован.

Fatality 01.10.2009 11:14

Цитата:

Да это же не баг... Окошко сохранения появляется до запроса файла. Так что флэш просто не знает имени файла, который БУДЕТ сгенерирован.
Хм, а вот это уже интересно, спасибо.


Часовой пояс GMT +4, время: 14:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.