Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   blazeds послал байтэрей на сервер... как прочитать? (http://www.flasher.ru/forum/showthread.php?t=135999)

micromacro 07.02.2010 00:44

blazeds послал байтэрей на сервер... как прочитать?
 
Уже который день бьюсь над одной и той же проблемой - передать картинку на сервер через blazeds. :p

Пользователь выбрал картинку :drinks:, я её успешно превратил в ByteArray и послал через rpc по blazeds на сервер. :bye:

Код AS1/AS2:

 private function onComplete(e:Event):void{
                    var ref:FileReference = e.currentTarget as FileReference;
                      myconnect.saveImage(ref.data);
                        }
 
public function saveImage(bbb:ByteArray):void{
 
                        nc.call( "MyServer.saveImage", new Responder( resultUpload, faultHandler ), bbb );
                }

Соответственно, на сервере встретил пришедший поезд. :moder:

Код AS1/AS2:

public static void saveImage(byte[] bytes){
 
                        Integer b=bytes.length;
                        tracemsg(b); // 353!!!
                            String s=b.toString();
    }
 
-----------------------
public static byte[] getBytes(Object obj) throws java.io.IOException{
              ByteArrayOutputStream bos = new ByteArrayOutputStream();
              ObjectOutputStream oos = new ObjectOutputStream(bos);
              oos.writeObject(obj);
              oos.flush();
              oos.close();
              bos.close();
              byte [] data = bos.toByteArray();
              return data;
          }

Что получаю.. на сервере bytes имеет длинну всегда 353 байт :eek:(хоть пустой файл посылаю хоть архив в 30 мегов) При этом если вывожу bytes.toSting() там пишут длинну обьекта: :rtfm:

[ASObject(12255971){position=2364.0, objectEncoding=3.0, endian=bigEndian, length=2364.0}

Чё делать? :taunt:

gloomyBrain 07.02.2010 02:08

Может быть проблема с MTU? То есть максимальный размер пакета составляет 353 байта (бред, конечно, но...) - попробуйте распилить ByteArray на части по 352 байта и отправить в n подходов. Посмотрите что получится.

PS
Сам сталкивался, но, правда, делал под PPP-соединение, там побольше размер пакета.

micromacro 07.02.2010 02:25

353 получаю даже если пустой байтэрей отправляю. У меня такое подозрение,

1) либо я не всё отправляю (неуспело догрузится)
2) либо флекс просто не передаёт байтэрей (стринги передаются на ура)
3) либо джава не может закастить обжект то byte[]

И уже подумав немного... наверно 2 вариант...

murz 07.02.2010 12:49

http://forum.springsource.org/showthread.php?t=81104
Посмотрите пример по ссылке


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

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