Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Скачивание объемных файлов с сервака (http://www.flasher.ru/forum/showthread.php?t=204678)

uglan 08.11.2013 19:15

Скачивание объемных файлов с сервака
 
Сегодня на повестке дня скачивание файлов с сервера без захламления памяти что немаловажно.
Сейчас я использую loader таким способом:
Код AS3:

var loader:Loader = new Loader();
        var request:URLRequest = new URLRequest("http://videos.hd-trailers.net/thehobbit2-sneakpeek_h1080p.mov");       
        var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null);
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadHand);
        loader.load(request, loaderContext);

На закачку способ работает, но дальше образуется две проблемы:
1) большие файлы засоряют память ровно под количество своего собственного веса что очень не хорошо
2) сохранение скаченного файла способом ниже почему то вызывает такую ошибку:

Error #2044: Unhandled IOErrorEvent:. text=Error #2124: Loaded file is an unknown type.

Сам код отвечающий за сохранение:
Код AS3:

function loadHand(e:Event):void{
        var file:File = File.applicationStorageDirectory.resolvePath("thehobbit2-sneakpeek_h1080p.mov");
        var wr:File = new File(file.nativePath);
        var stream:FileStream = new FileStream();
                stream.open(wr,FileMode.WRITE);
                stream.writeBytes(e.target.bytes, 0, e.target.bytesTotal);
                stream.close();
}

Вопрос, как сливать файл постепенно без засорения памяти и что не так с моим способом сохранения?
И да, download() от FileReference не подходит, т.к. нужно сделать все потихому.

maincode 08.11.2013 19:27

класс File можно использовать только в AIR, подтвердите что вы не используете Flash Player для этого

uglan 08.11.2013 19:28

так точно, AIR 3.8+!

caseyryan 08.11.2013 21:28

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

uglan 08.11.2013 22:42

Это не браузер, это в приложении под ios. По нетстриму нашел только вариант с FileReference. Как их поженить с File? Или нужен какой-то другой способ?

Wolsh 08.11.2013 23:30

Цитата:

Error #2044: Unhandled IOErrorEvent:. text=Error #2124: Loaded file is an unknown type.
Loader понятия не имеет о видеофайлах. Он знает только swf и изображения. Байты надо закачивать с помощью URLLoader.

uglan 09.11.2013 00:04

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


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

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