Отправка ByteArray в Zend_Amf

У меня проблемы с отправкой ByteArray на мой Zend_Amf_server. Я получаю NetConnection.Bad.Call от сервера. Если я отправляю переменную с другим типом данных, тогда ByteArray работает нормально.

Я использовал тот же скрипт раньше с AMFPHP без каких-либо проблем. Но для этого проекта мне очень нужно, чтобы это работало в Zend_Amf.

AS3:

var path:String = "/images/picture.jpg";
var ba:ByteArray = jpgencoder.encode(bitmap.bitmapData);

var nc:NetConnection = new NetConnection();
nc.connect(zend_amf_server);

nc.call("Service.saveJPG", new Responder(responseHandler, errorHandler), path, ba);

PHP:

class Service{
    public function saveJPG($path, $byteArray){
             return "worked";
    }
}

person Community    schedule 25.02.2009    source источник


Ответы (3)


Сегодня вечером я получил ту же ошибку от Zend AMF, делая в основном то же самое с кодом, который раньше работал в AMF. Вот что у меня работает. Единственное отличие от вашего кода, которое я заметил, это то, что я только передаю ByteArray в Zend и явно устанавливаю ObjectEncoding.

Я продолжал получать пустые jpg-файлы на сервере, потому что где-то читал, что мне нужно сделать ->data, чтобы получить данные ByteArray.

AS3:

_service = new NetConnection();
_service.objectEncoding = ObjectEncoding.AMF3;
_responder = new Responder(this._onSuccess, this._onError);
_service.connect(zend_amf_server);

var myEncoder:JPGEncoder = new JPGEncoder( qualityValue );
var myCapStream:ByteArray = myEncoder.encode ( myBitmapSource ); // myBitmapSource is BitmapData drawn from a Sprite
this._service.call("Remote.savePhotoToServer", this._responder, myCapStream);

PHP:

function savePhotoToServer ( $pInfos )
{       
    $bytearray = $pInfos;       
    $idimage = $this->nameImage(".jpg"); // calls a private func for a new name
    return ( $success = file_put_contents("./_photos/".$idimage, $bytearray) ) ? $idimage : $success;
}
person David Ortinau    schedule 26.02.2009

Спасибо, Дэвид за ваш ответ, похоже, проблема в том, что я отправил ByteArray в Zend_Amf вместе со строкой. Если я отправлю только ByteArray, он отлично работает, и изображение сохраняется.

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

person Community    schedule 26.02.2009

Хорошо, я нашел проблему. Я использовал Zend Framework в последнем репозитории «tag» v. 1.7.5. Я переключил репозиторий для AMF на репозиторий «trunk», и теперь он работает. В Zend_Amf_Server была ошибка при отправке на него массивов.

person Yens    schedule 27.02.2009