Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как прилепить progressBar !? (http://www.flasher.ru/forum/showthread.php?t=120707)

motoroller 28.01.2009 16:10

Как прилепить progressBar !?
 
Я давно задавал вопрос про resize картинок до отправки серверу.
Собственно всё получается, приведу код, где нужна помощь:

Код AS3:

   ....
  // bt - отресайзенная картинка
  var jpgEncoder:JPGEncoder=new JPGEncoder(100);
  var jpgStream:ByteArray=jpgEncoder.encode(bt);
 
    var request:URLRequest = new URLRequest('upload.php?name=tes2t');
    var loader: URLLoader = new URLLoader();
    request.contentType = 'application/octet-stream';
    request.method = URLRequestMethod.POST;
    request.data = jpgStream;
    loader.load(request);

Конечно можно повесить сообщение о загрузке, но хотелось, бы чтобы всё это дело могло работать с прогрессбар, скажите есть идеи ?

mre 28.01.2009 17:24

А как у Вас upload.php отрабатывает без домена?

Alex Lexcuk 28.01.2009 17:48

>>Я давно задавал вопрос про resize картинок до отправки серверу.
>>могло работать с прогрессбар,
Может как-то так
Код:

//кусок документ класса
        fr=new FileReference;
        fr.addEventListener(Event.SELECT,selectHandler);
        fr.addEventListener(Event.OPEN,openHandler);
        fr.addEventListener(ProgressEvent.PROGRESS,progressHandler);
        fr.addEventListener(Event.COMPLETE,completeHandler);
//конец куска документ класса

private function progressHandler(event:ProgressEvent):void {
        //            pb.label = "UPLOADING %3%%";
        pb.setProgress(event.bytesLoaded,event.bytesTotal);
}


motoroller 28.01.2009 17:53

Цитата:

Сообщение от mre (Сообщение 794062)
А как у Вас upload.php отрабатывает без домена?

Ну это нюасны, суть вопроса другая

Добавлено через 1 минуту
Цитата:

Сообщение от Alex Lexcuk (Сообщение 794069)
>>Я давно задавал вопрос про resize картинок до отправки серверу.
>>могло работать с прогрессбар,
Может как-то так
Код:

//кусок документ класса
        fr=new FileReference;
        fr.addEventListener(Event.SELECT,selectHandler);
        fr.addEventListener(Event.OPEN,openHandler);
        fr.addEventListener(ProgressEvent.PROGRESS,progressHandler);
        fr.addEventListener(Event.COMPLETE,completeHandler);
//конец куска документ класса

private function progressHandler(event:ProgressEvent):void {
        //            pb.label = "UPLOADING %3%%";
        pb.setProgress(event.bytesLoaded,event.bytesTotal);
}


Вы не совсем наверно поняли, что я спрашивал ...

Alex Lexcuk 28.01.2009 19:47

Да я правильно понял, я просто подумал что используя FileReference это дело можно провернуть.
Однако...
А я тоже как вы пробовал передавать данные, однако после заливки на сервер оказалось что данные
больше 512 байт (кажется) не передавались. (передавал текст)
Поэтому надо резать на куски и передавть кусками.
первая передача
передает первый кусок, название файла,
длину файла и переменную идентификатор это может быть date.getTime().toString()
так же переменную статус - например создать.
PHP при этом создает временный файл с названием имя+время и записывает туда первый кусок и отдает
назад флешу что-нибуть допустим true.
Новый лоадер и второй кусок данных. статус добавить php дописыват временный файл новой порцией.
...третий
...скольно нужно будет.
При передаче последнего статус выполненно. и название файла
При этом php перезаписывает временный файл в основательный затем удаляет временный.

Естественно заранее известно сколько кусков будет передано, а паузы в передаче этих отрезков можно
использовать для прогрессбара.

s8000_1 28.01.2009 20:19

Нельзя такое провернуть.
Вернее можно но с большущими проблемами (см. Alex Lexcuk)

rty 29.01.2009 00:47

Как удалось выяснить, индикацию загрузки можно реализовать с помощью скрипта на перле.
можно попробовать дергать проценты из него.

Мечтатель 09.08.2009 23:18

хм, а ведь Адоб при использовании метода upload, каким-то образом узнает сколько данных передано на сервак. Значит можно сделать

wvxvw 10.08.2009 02:08

Ну, как бы TCP обязывает посылать пакеты по очереди, т.е. отправил - получи обратно сообщение о доставке, и только тогда отправляй следующий, так что на на более низком уровне сделать конечно можно, а вот на уровне плеера - эт вряд ли :)

Мечтатель 10.08.2009 12:37

Естественно, на более низком уровне)
в таком случае мне представляется класс URLLoader несколько неполноценным для его использования при передачи данных на сервер, так как он не предоставляет методов отслеживания самого процесса передачи.
Может быть во Flex FrameWork реализовано, что либо подобное? Кто-нибудь знает?


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

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