我在向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";
}
}
答案 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中存在一个错误。