发送 ByteArray 到 Zend_Amf

发布于 2024-07-14 07:42:44 字数 638 浏览 8 评论 0原文

我在将 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";
    }
}

I'm having problems sending a ByteArray over to my Zend_Amf_server. I get a NetConnection.Bad.Call back from the server. If I send a variable with another datatype then ByteArray it works fine.

I used the same script before with AMFPHP witouth any problems. But for this project I really need this to work in 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";
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

╭⌒浅淡时光〆 2024-07-21 07:42:44

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

I was getting the same error from Zend AMF tonight doing basically the same thing with code that previously worked in AMF. Here's what I have that's working. The only bit I spot different from your code is I'm only passing the ByteArray to Zend, and I'm explicitly setting the ObjectEncoding.

I kept getting empty jpgs on the server because I'd read elsewhere that I needed to do ->data to get to the ByteArray data.

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;
}
痴梦一场 2024-07-21 07:42:44

感谢 David 的回复,问题似乎是我将 ByteArray 与 String 一起发送到 Zend_Amf 。
如果我只发送 ByteArray,它就可以正常工作并且图像将被保存。

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

Thanks David for your reply, the problem seemed to be that I sent a ByteArray to Zend_Amf together with a String.
If I send the ByteArray only it works fine and the Image is saved.

The only problem now is that the path to save the image on should be variable and I can't send it over to my Amf_Server together with the ByteArray at the same time.

圈圈圆圆圈圈 2024-07-21 07:42:44

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

Ok, I found the problem. I was using the Zend Framework in the latest 'tag' repository v. 1.7.5 I switched the repository for AMF to the the 'trunk' repository and now it works. There was a bug in Zend_Amf_Server when sending Arrays over to it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文