2009-02-25 7 views
0

J'ai des problèmes pour envoyer un ByteArray à mon Zend_Amf_server. Je récupère un NetConnection.Bad.Call du serveur. Si j'envoie une variable avec un autre type de données, alors ByteArray fonctionne correctement.Envoi de ByteArray à Zend_Amf

J'ai utilisé le même script auparavant avec AMFPHP sans aucun problème. Mais pour ce projet, j'ai vraiment besoin de travailler avec 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"; 
    } 
} 

Répondre

1

Je recevais la même erreur de Zend AMF ce soir faire essentiellement la même chose avec le code qui fonctionnait à l'AMF. Voici ce que j'ai qui fonctionne. Le seul bit que je trouve différent de votre code est que je ne fais que passer le ByteArray à Zend, et je suis en train de définir explicitement le ObjectEncoding.

J'ai continué à obtenir des jpgs vides sur le serveur parce que j'avais lu ailleurs que je devais faire -> des données pour accéder aux données 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; 
} 
0

Merci David pour votre réponse, le problème semble être que j'ai envoyé un ByteArray à Zend_Amf avec une chaîne. Si j'envoie le ByteArray seulement cela fonctionne très bien et l'image est enregistrée.

Le seul problème est maintenant que le chemin pour enregistrer l'image doit être variable et je ne peux pas l'envoyer à mon Amf_Server avec le ByteArray en même temps.

0

Ok, j'ai trouvé le problème. J'utilisais Zend Framework dans le dernier dépôt 'tag' v. 1.7.5 J'ai basculé le référentiel pour AMF vers le dépôt 'trunk' et maintenant ça marche. Il y avait un bug dans Zend_Amf_Server lors de l'envoi de tableaux.

Questions connexes