0

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";
    }
}
4

3 に答える 3

1

今夜、Zend AMF から同じエラーが発生し、以前は AMF で動作していたコードで基本的に同じことを行っていました。これが私が持っているものです。私があなたのコードと異なる唯一の点は、ByteArray を Zend に渡すだけであり、ObjectEncoding を明示的に設定していることです。

サーバー上で空のjpgを取得し続けました。これは、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;
}
于 2009-02-26T02:23:39.117 に答える
0

David さん、返信ありがとうございます。問題は、ByteArray を String と一緒に Zend_Amf に送信したことにあるようです。ByteArray のみを送信すると、正常に動作し、画像が保存されます。

唯一の問題は、画像を保存するパスが可変である必要があり、ByteArray と同時にそれを Amf_Server に送信できないことです。

于 2009-02-26T10:43:00.117 に答える
0

わかりました、問題が見つかりました。最新の「タグ」リポジトリ v. 1.7.5 で Zend Framework を使用していました。AMF のリポジトリを「トランク」リポジトリに切り替えたところ、動作するようになりました。Zend_Amf_Server に配列を送信する際に、Zend_Amf_Server にバグがありました。

于 2009-02-27T08:35:52.443 に答える