将ByteArray发送给Zend_Amf

时间:2009-02-25 11:49:46

标签: php actionscript-3 zend-framework bytearray amf

我在向Zend_Amf_server发送ByteArray时遇到问题。我从服务器返回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 个答案:

答案 0 :(得分:1)

今晚我从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;
}

答案 1 :(得分:0)

感谢大卫的回复,问题似乎是我将一个ByteArray和一个字符串一起发送到Zend_Amf。 如果我只发送ByteArray它可以正常工作并保存图像。

现在唯一的问题是保存图像的路径应该是可变的,我不能同时将它与ByteArray一起发送到我的Amf_Server。

答案 2 :(得分:0)

好的,我发现了问题。我在最新的'tag'存储库v.1.7.5中使用Zend Framework我将AMF的存储库切换到'trunk'存储库,现在它可以工作了。在将Arrays发送给它时,Zend_Amf_Server中存在一个错误。