Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Получить картинку из DataEvent.data (http://www.flasher.ru/forum/showthread.php?t=118539)

chudesno 26.11.2008 21:04

Получить картинку из DataEvent.data
 
Здравствуйте.

Ситуация такая:
На сервер грузится картинка, в ответ сервер возвращает ее же.
Я слушаю событие DataEvent.UPLOAD_COMPLETE_DATA.
У этого события есть св-во data типа String.
Код AS3:

private function uploadCompleteHandler (event : DataEvent) : void {
  var data : String = event.data;
  ...
}

Дальше, чтобы получить картинку, надо вызвать
Код AS3:

var loader : Loader = new Loader ();
loader.loadBytes (byteArray);

Вопрос у меня такой: как перегнать св-во DataEvent.data типа String в byteArray?

Спасибо.

etc 27.11.2008 00:35

А с чего вы взяли, что event.data содержит картинку? Или ваш скрипт её возвращает? Если возвращает, то надо делать, чтобы возвращал ссылку на загруженную картинку.

chudesno 27.11.2008 01:03

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

SamFR 27.11.2008 18:07

Насчёт перекодировки — попробуйте

Код AS3:

ByteArray.writeMultiByte(value:String, charSet:String):void


ZlPredator 27.11.2008 21:16

Ситуация не совсем понятная :(
Если вы используете XMLSocket, то DataEvent.UPLOAD_COMPLETE_DATA будет вызываться на каждый полученный блок данных. Каждый блок - это UTF8 строка, заканчивающаяся нулевым байтом. Если просто попробовать передать бинарные данные, то неизвестно чем это вообще закончится и проблема далеко не в перекодировании String в ByteArray. Если вы все таки хотите использовать данным образом, то необходимо придумать какую нить оболочку для данных (например, перегнать их в base64 на сервере), после чего передать, добавив нулевой байт в конец, а на флеше декодировать из текста (разобрав тот же base64) и записать результат в ByteArray.
Проще все таки передавать ссылку...

SamFR 27.11.2008 22:03

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

chudesno 28.11.2008 00:14

Я использую FileReference.

С сервера уходит картинка, у меня есть какая-то строка, производная от этой картинки. Пробовал для разных файлов, строка всегда длинной в 8 символов приходит.. Видимо это часть картинки до первого нулевого байта.
Наверное, без манипуляций с сервером не обойтись =)

Всем спасибо за ответы!


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

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