Flash remoting, ecriture d'un fichier image

thevirusmachine Messages postés 1 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 20 mai 2009 - 20 mai 2009 à 14:31
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013 - 25 mai 2009 à 09:32
Bonjour à tous,

Je ne suis pas sur de poser la question au bon endroit car celle ci demande des connaissances autant en coldfusion qu'en AS3

Je travaille actuellement sur un encrypteur decrypteur d'images sous Flash CS4 en AS3 et je lis et écris mes fichier avec ColdFusion 8.
j'arrive à importer mes image en binaire grace au composant ci dessous :

<cfcomponent name="file-writer">


    <cffunction name="readJpg" access="remote" returntype="binary">

        <cffile action="readbinary" file="c:\Inetpub\wwwroot\virtual-visite\tests\embed_1\Salon_b.jpg" variable="img" />

        <cfreturn img>

    </cffunction>

    <cffunction name="writeJpg" access="remote" returntype="string">
        <cfargument name="imgDatas" type="string" required="yes">
        <cffile action="write" file="c:\Inetpub\wwwroot\virtual-visite\tests\embed_1\01.jpg" output="#ToBinary(imgDatas)#" />
        <cfset myResult=#ToString(imgDatas)#>
        <cfreturn myResult>
    </cffunction>

</cfcomponent>

Jusque là tout fonctionne , je reçois bien un objet sous flash et le fait passer dans un tableau d'octet (ByteArray), puis je charge les données binaires dans un loader et j'affiche mon image. Voici les deux fonctions qui me le permettent :
la classe ColdFusionEvent est une classe perso me renvoyant tout evenement sorti de ma classe de remoting avec les paramètre de return dans un un tableau en propriété de nom _speParams.

        private function ImageDownloaded(evt:ColdFusionEvent):void {
            trace("ColdFusionConnection - Evènement : "+evt);
           
            // Retrait de l'évènement
            ColdFusionCfc.removeEventListener(ColdFusionEvent.INITIALISATION, ImageDownloaded);
           
            var imgLoader:Loader = new Loader();
            var i:int;
                   
            for(i = 0; i < evt._speParams[1].length; i++) {
                imgFullBytes.writeByte(evt._speParams[1][i]);
            }
           
            trace(typeof(evt._speParams[1]));
            trace(imgFullBytes);
           
            imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadBytesComplete);
            (imgLoader).loadBytes(imgFullBytes);
        }

        private function loadBytesComplete(evt:Event):void {
           
            var imgContent:Bitmap = evt.target.loader.content;
            var imgContentDatas:BitmapData = imgContent.bitmapData;
            addChild(imgContent);
        }

Le Code fonctionne bien et mon image s'affiche, problème, lorsque je souhaite renvoyer mon image pour l'écrire sur le serveur j'ai toujours une érreur :
 Marqueur de type d'objet inattendu (17)

Je ne parviens pas à renvoyer une image en binaire à cold. est ma question est donc comment dois je convertir mon image ou dans quel type d'objet, en brefs quelles sont les opérations nescessaires pour envoyer mon image au format binaire à cold ?

Cela fait plusieurs jours que je cherche une solution en vain. Je suis désespéré. c'est la première fois que je me prends autant la tête avec flash, surtout que cela fonctionne très bien avec flex mais mon projet dois rester uniquement sous flash.

Pliz Help !

Merci d'avance... ^^

1 réponse

nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
25 mai 2009 à 09:32
Bonjour,

je comprend pas trop l'intérêt de passer ton image en binaire, il te suffit de passer le path de l'image du serveur vers le client.
Voici quelques pistes en CF7 + AS : http://www.asfusion.com/projects/fileexplorer
http://www.asfusion.com/blog/entry/file-upload-with-coldfusion-flash-forms

Nickadele
0
Rejoignez-nous