Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   FileReference - замена содержимого в свойстве data. (http://www.flasher.ru/forum/showthread.php?t=195145)

babuia 01.03.2013 04:13

FileReference - замена содержимого в свойстве data.
 
Здравствуйте.
Есть ли способ заменить содержимое в свойстве data объекта FileReference, не смотря на то что оно Read Only?
С помощью FileReference загружается картинка, редактируем, и вот теперь нужно отправить редактированную версию на сервер.
Пробовал воспользоваться методом writeBytes, ошибку НЕ вызывает, но изменения не применяются.

Самое главное то, что нужна поддержка feedback-а виде прогрессбара.

Если бы не это условие то можно было бы воспользоваться URLLoader-ом, он позволяет отправить на сервер редактированную версию но не позволяет получать промежуточный feedback, умеет только 0% и 100%.

Как можно отправить в данном случае редактированную версию изображения не потеряв прогрессбар?

gloomyBrain 01.03.2013 12:14

FlashPlayer с версии 11 поддерживает 2 полезных штуки для сокетов:
- количество байт в буфере отправки
- событие выгрузки данных их буфера отправки в сеть

Однако, это вам поможет только в случае с сокетом (то есть придется заморочиться и отправлять данные по порту выше 1024 на специальный сервис, который эти файлы будет принимать). Не слишком сложно, но и не тривиально.

Есть и другое решение:
- отправляем запрос на сервер, который вернет нам специальный ключ (некую строку)
- отправляем данные в запросе обычным URLLoader'ом с указанием в одном из параметров ключа, полученного на предыдущем шаге
- пока URLLoader выгружающий файл не отправил событие Event.COMPLETE, постоянно дергаем специальный адрес на сервере другим URLLoader'ом и получаем в ответ статус текущией загрузки (опять же по ключу).

Тут тоже придется заморочиться с сервером, но это уже попроще да и другие решения для Flash вряд ли существуют.

Tails 01.03.2013 12:33

1 картинка отправляется довольно быстро, так ли важен прогресс бар?

babuia 01.03.2013 16:08

#gloomyBrain У нас нет доступа к серверам, отправляется только по 80 порту.

Добавлено через 47 секунд
Цитата:

1 картинка отправляется довольно быстро, так ли важен прогресс бар?
Да, это важно.

Tails 01.03.2013 16:23

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

babuia 01.03.2013 16:44

Цитата:

Сообщение от Tails (Сообщение 1123087)
Если картинок несколько, то после отправки первой, вы можете показать пользователю приблизительно рассчитанное время для отправки всех остальных.

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

Но может все таки есть способ отправить?
К примеру если можно было бы записать в data объекта FileReference-а, то можно было бы загрузить с прогрессом.
И тут задача превращается в "Как обойти Read Only".

Tails 02.03.2013 02:01

babuia,
Использовать FileReference для отправки модифицированных файлов у вас не получиться, флажок read-only никак не обойти, этот класс зашит в флеш плеер конечного пользователя. Сделано это, видимо, из-за каких-то соображений по безопасности.

У URLoader'а есть же событие progress, оно не отправляется при отправке данных?

babuia 02.03.2013 11:21

Цитата:

У URLoader'а есть же событие progress, оно не отправляется при отправке данных?
Оно отправляется, но это прогресс о полученных данных, то-есть в случае если сервер на наш запрос ответит, то во время принятия ответа будет вызываться событие progress, и вернет именно количество принятых байт принадлежащих ответу, сам принятый ответ хранится в data.


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

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