Flex Air Скачать Мобильный файл - PullRequest
0 голосов
/ 14 марта 2012

Я создаю приложение Adobe Air Mobile, в настоящее время предназначенное для Android (и в конечном итоге для iOS).Я использую Flash Builder 4.6 (который является Flex).

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

Кажется, чтопривести несколько примеров того, как сделать загрузку во Flex / Air, но не так много во Flex / Air / Mobile.Кроме того, сочетание примеров, кажется, повсеместно с версиями пространства имен и т. Д.

Может кто-нибудь предоставить краткий пример того, как это сделать в приложении Air Mobile?

Спасибоyou!

Редактировать: Что я пробовал:

Итак, из примеров в Интернете, первое, что я сделал, это добавил пространство имен в объявлениях Flex: xmlns:net="flash.net.*"

Затем я добавил следующий компонент: <net:URLLoader id="urlLoader" />

Затем в событии нажатия кнопки я вызвал его: urlLoader.load(new URLRequest(downloadUrl));

Я получил ошибку времени выполнения: Error #2044: Unhandled ioError:. text=Error #2032: Stream Error. URL: http://...

Проблема в том, что я не знаю, куда идти отсюда, так как не знаю, чего не хватает.

1 Ответ

2 голосов
/ 16 марта 2012

у меня этот код работает на IOS:

public function download():void{
        var loader:URLLoader = new URLLoader();
        loader.dataFormat = URLLoaderDataFormat.BINARY;
        loader.addEventListener(IOErrorEvent.IO_ERROR,function(e:IOErrorEvent):void{
            Alert.show('error IO');
        });
        loader.addEventListener(Event.COMPLETE,downloadComplete);
        loader.load(new URLRequest(YOUR_URL));          
    }

private function downloadComplete(event:Event):void{
        try{
            var file:File=File.applicationStorageDirectory.resolvePath(YOUR_LOCAL_PATH);
            var ba:ByteArray  = event.target.data as ByteArray;
            var fileStream:FileStream = new FileStream();
            fileStream.addEventListener(IOErrorEvent.IO_ERROR,function(e:IOErrorEvent):void{
                Alert.show('error IO');
            });
            fileStream.open(file, FileMode.WRITE);  
            fileStream.writeBytes(ba);  
            fileStream.addEventListener(Event.CLOSE, fileClosed);  
            fileStream.close(); 
            Alert.show("File downloaded succesfully")   
        }
        catch(eeee){
            Alert.show("error")
        }
    }
...