Отправка ByteArray в Zend_Amf - PullRequest
0 голосов
/ 25 февраля 2009

У меня проблемы с отправкой 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";
    }
}

Ответы [ 3 ]

1 голос
/ 26 февраля 2009

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

Я продолжал получать пустые jpgs на сервере, потому что я читал в другом месте, что мне нужно было сделать -> данные, чтобы добраться до данных 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;
}
0 голосов
/ 27 февраля 2009

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

0 голосов
/ 26 февраля 2009

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

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

...