![]() |
Загрузка файла на сервер и прогресс бар. Как?
Есть у нас проект Q-ImageUploader, который отсылает картинки на сервер, предварительно сделав с ними некоторые манипуляции (resize,rotate). Проблема в том, что когда мы их отсылаем методом POST флеш не вызывает событие ProgressEvent.PROGRESS. И в итоге у нас нет прогрессбара.
Как можно с этим побороться? Может как-то на стороне сервера какой специальный скрипт? Может кто-то готов решить эту проблему за деньги? Добавлено через 8 минут Код AS3:
|
Первый вариант. Предполагаю, что вы выбираете файл на локальном диске с помощью FileReference.browse()
затем загружаете его во флэшку с помощью FileReference.load() Значит вам доступно свойство FileReference.data После того как вы отредактировали картинку, полученную битмапу можно записать в FileReference.data, только не так FileReference.data = byteArray, а так FileReference.data.writeBytes, а потом воспользоваться FileReference.upload, а FileReference при аплоаде генерирует событие ProgressEvent Сам таким методом не пользовался, но может сработать. --- Второй вариант, это серверный скрипт, который бы возвращал текущий прогресс аплоада(как это сделано на яндекс видео). Нужно будет в процессе аплоада периодически спрашивать у него о прогрессе. |
Цитата:
А можно поподробнее по поводу серверного скрипта (как в яндексе), как это организуется? |
Вообще-то из хелпа можно понять, что URLLoader не генерирует ProgressEvent при аплоаде данных на сервер, а FileReference генерирует. Так что не оказывайтесь так быстро он нормальных нечерезпопных методов :) Вы проверьте и отпишитесь потом - мне тоже полезно будет знать. Первый вариант предпочтительней.
А второй вариант.. посмотирте на яндексе :) Сервис яндекс видео. Могу на выходных взяться за деньги реализовывать первый вариант. Если не получится то деньги не возьму ;) А если получится, то возьму 50 баксиков :) В воскресенье результат теста сообщу. С серверным скриптом не помогу. |
Цитата:
Я , кстати, не нашёл описания этого поля в хелпе для FileReference Код AS3:
Посмотрел я яндекс видео и яндекс фото и видео. Поскольку они ничего на стороне клиента не делают, то спокойно могут отсылать с помощью FileReference или FileReferenceList. Почему вы думаете, что они используют скрипты? |
Цитата:
Цитата:
http://help.adobe.com/en_US/AS3LCR/F...0.0/index.html Цитата:
Цитата:
Давайте я уже просто сделаю для вас это :) скайп - kackbip666 |
null
fileReference.data.writeBytes() не приводит ни к чему, поскольку fileReference.data это read-only массив.
видимо, data просто унаследовал набор функций от ByteArray. еще предложения? как это вообще обычно реализуют, через flash+js? а js позволяет считать переданные байты? Опрашивать сервер вообще не вариант - я загружаю один-два метра, и просто нецелесообразно возиться с серверной обратной связью. хотел сокетами загружать файлы, уже все написал и работает (долго мучался с правильной сборкой заголовков), но оказалось, что сокет все равно не выкидывает ProgressEvent при аплоаде файлов. К тому же для сокетов, оказывается, нужны особые И еще - fileReference мне не совсем подходит, потому что после загрузки данных не возвращает ответ. А надо бы. Ну и измененный файл не отправишь. зы: походу мне нужен свой собственный флеш с блекджеком и шлюхами, и не черезжопу не получится) |
Цитата:
Есть еще такой не очень красивый вариант - разбить отправляемый файл на несколько частей и грузить части последовательно :) Будут, конечно, задержки между окончанием загрузки очередного блока и началом загрузки следующего, но этого можно избежать, если грузить в 2 потока. |
В итоге я забил и сделал проще. Обработкой изображения теперь занимается сервер. Неохота было лишний раз его грузить - у меня лимит на использование процессора и памяти). С другой стороны, на php кода для нужной операции в пару раз меньше (слава GD).
Теперь fileReferenc`ом выбираешь картинку, грузишь на сервер (с прогрессбаром, как надо :)) и даже получаешь ответ с сервера (у меня возвращается адрес картинки (или ошибка), чтобы js ее тут же вставлял на страницу). Эффект достигнут. |
А если картинка огромная? Это не только лишний расход ресурсов, но и трафика на загрузку. Это не принципиально?
|
| Часовой пояс GMT +4, время: 23:36. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.