Отправка 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";
}
}
3 ответа
Сегодня вечером я получал ту же ошибку от 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;
}
Спасибо Дэвиду за ваш ответ, проблема заключалась в том, что я отправил ByteArray в Zend_Amf вместе со строкой. Если я отправляю ByteArray только он работает нормально, и изображение сохраняется.
Единственная проблема сейчас заключается в том, что путь для сохранения изображения должен быть переменным, и я не могу отправить его на мой Amf_Server вместе с ByteArray одновременно.
Хорошо, я нашел проблему. Я использовал Zend Framework в последнем репозитории "tag" v. 1.7.5. Я переключил репозиторий для AMF в репозиторий "trunk", и теперь он работает. В Zend_Amf_Server была ошибка при отправке на него массивов.