Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.02.2014, 10:58
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 1  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
По умолчанию Прогресс-бар при аплоаде данных сервер через URLLoader

Отправляю картинку на сервер через URLLoader (если точнее - с использованием класса MultipartURLLoader), и, как тут уже обсуждалось ранее, событие ProgressEvent.PROGRESS там не отрабатывает. По крайней мере, так, чтобы можно было показать адекватно изменяющийся прогресс-бар.

У кого есть готовое решение?

Старый 05.02.2014, 14:09
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
1) Бесконечная крутилка
2) Сервак вроде должен отдавать инфу, может это настройка какая-то.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 05.02.2014, 15:31
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 3  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Не, с крутилкой не вариант. Это я и сам могу.
Насчет того, что сервер должен что-то отвечать, я где-то видел, но так и не понял точно, что именно.

У меня была шальная мысль сделать аплоад средствами js и получать прогресс оттуда...

Старый 05.02.2014, 22:29
Aprel вне форума Посмотреть профиль Отправить личное сообщение для Aprel Найти все сообщения от Aprel
  № 4  
Ответить с цитированием
Aprel

Регистрация: Sep 2013
Сообщений: 16
А GreenSock LoaderMaх не пробовали http://www.greensock.com/loadermax/?

Старый 06.02.2014, 00:48
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 5  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
С загрузкой файлов в клиент с сервера проблем никаких нет. Тут прекрасно справляются и штатные средства. Речь идет об отправке файлов, которые создает клиент (например, изображение после обработки), на сервер.

Добавлено через 24 минуты
Собственно, могу перефразировать вопрос.

Я так понимаю, события ProgressEvent при отправке файла данных на сервер POST'ом через URLLoader не возникает по совершенно закономерной причине. Вот если в ответ на запрос с файлом сервер начнет грузить данные со своей стороны - то вот там и возникнет событие ProgressEvent.

Так что вопрос скорее получается про трюк для обмана пользователя. На первый взгляд может отработать примерно такая штука:

1. Если пользователь еще не отправлял ни одного файла на сервер, то мы считаем, что его скорость доступа к серверу ХХХ кбит/с (придется подобрать некоторую среднюю скорость опытным путем). В соответствии с этой "скоростью" и показываем движение прогресс-бара. Где-то на последней четверти замедляемся, чтобы не получилось, что прогресс-бар уперся в ограничитель, а загрузка не закончилась. Пусть лучше пользователь думает, что закачка замедлилась.

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

Старый 06.02.2014, 01:35
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 6  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
А сервак ваш на чем?
http://www.php.net/manual/ru/session...d-progress.php

Добавлено через 5 минут
Кстати, когда я не знал про всякие мултипартлоадеры и спец механизмы приема файлов в пхп, у меня был написан свой велосипед, который точно отображал прогресс аплоада. Правда он не секьюрный был. Буду дома, поищу.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 06.02.2014, 10:45
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 7  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Не, сервер делал не я и он точно не на пхп.
Впрочем, я кину им ссылку, может они чего нароют.

Цитата:
у меня был написан свой велосипед, который точно отображал прогресс аплоада
Интересно было бы глянуть.

Старый 06.02.2014, 14:50
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 8  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Хм нашел проект, там вообще все через файлреференс, а мне казалось что я байтаррай кидал. Но тем не менее прогресс там точно был.

Добавлено через 46 минут
А нет, я наврал, что наврал, короче, я слал картинку байтарраем и писал ее в файл пхпой. Сейчас смотрю, вроде не такой уж и плохой способ, а то мультипарты всякие :о)

PHP код:
<?php
   
include("var.inc");
   
$data $GLOBALS['HTTP_RAW_POST_DATA'];
   
$filename $PATH."temp/".md5(uniqid(rand())).".png";
   
$fp fopen($filename"wb");
   
fwrite($fp$data);
   
fclose($fp);
?>
Код AS3:
 
private function saveImage(png:ByteArray):void
{
	var request:URLRequest = new URLRequest(Pathes.scriptPath + 'saveImage.php?uid=1');
	request.contentType = 'application/octet-stream';
	request.method = URLRequestMethod.POST;
	request.data = png;
	var loader:URLLoader = new URLLoader();
	loader.load(request);
}
Голь на выдумки хитра.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.


Последний раз редактировалось GBee; 06.02.2014 в 15:39.
Старый 06.02.2014, 23:31
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 9  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Так вроде это та же самая отправка постом. И в этом случае прогрессэвент возникает?

Старый 06.02.2014, 23:53
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 10  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Раньше возникал видимо

Добавлено через 32 минуты
Хотя видимо нет, прогресс будет показывать то, что назад пойдет.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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