. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .




 
 
SEGÉDLETEK Flash+PHP+MySQL

Fájlok feltöltése Flash-ből PHP segítségével
  feltöltve: 2005.07.04 | szerző: savanya | olvasva: 9008 alkalommal

     
 

Az itt következő segédlet flash felületen keresztül, PHP segítségével, online környezetben megvalósított fájlfeltöltés megoldásának egy - de korántsem az egyetlen lehetséges (pld egy javascriptes megoldás itt) - módját hivatott bemutatni. A feladat összetettségéből adódóan többek közt érinteni fogjuk a PHP képfájlkezelési lehetőségeit, flashből való új, méretre szabott böngészőablak nyitásának, illetve a párhuzamosan futó swf-fájlok közti kommunikációnak a problámakörét is. Legyen tehát a feladat egy aktuálisan futó flash felületű 'honlap' egy adott részébe egy *.jpg fájl feltöltése.

A flash alapú kezelőfelület

Hozzunk létre egy új image_upload.fla fájlt, amely tartalmaz egy darab gombot (instance neve: upload_btn), ami a feltöltési folyamatot fogja indítani, egy darab üres movieClip-et (instance neve: holder_mc), ami majd a feltöltött képet fogja megjeleníteni, és egy darab dinamikus szövegmezőt (instance neve: pictname_textfield), amibe majd a feltöltött képfájl neve kerül. Körülbelül az alábbiak szerint:

Az ábra remélem nem szorul magyarázatra (a kis fehér pötty az üres 'holder_mc' movieClip).
Első lépésként egy kódra lesz szükségünk, amely az upload_btn lenyomása esetén megnyit egy popup ablakot a 'tallozas.html' tartalommal (erről később), illetve létrehoz egy LocalConnection() objektumot, aminek a feladata lesz 'figyelni' a majd esetlegesen megérkező adatot, illetve ha ez megtörténik, a kapott adatnak megfelelően kiírni a feltöltött kép nevét és egyúttal megjeleníteni azt.
Az actions layerre tehát a következő kódot írjuk:

// néhány alapbeállítás
Stage.scaleMode = "noScale";
Stage.showMenu = false;
// a leendő popup ablak (mérete 460*150 pixel) helyének meghatározása(*1)

qtx = (System.capabilities.screenResolutionX-460)/2;
qty = (System.capabilities.screenResolutionY-150)/2;
// az feltöltést indító gomb funkciójának megahtározása
upload_btn.onRelease = function() {
      // popup ablak nyitása(*2)
      getURL("javascript:function pop(){newwin=window.open(\"tallozas.html\", \"_blank\", \"width=460,                   height=150, left="+qtx+", top="+qty+", scrollbars=no, resizable=no, toolbar=no,                   statusbar=no\");return;};pop();");
      // új localConnection objectum létrehozása(*3)
      receivingLC = new LocalConnection();
     // a localConnection objektumon keresztül indítandó függvény meghatározása(*4)
      receivingLC.localConnectDataCame = function(pictName) {
            //a fájlnév kiiratása
            pictname_textfield.text = pictName;
            //a képfájl betöltése a holder_mc-be
            holder_mc.loadMovie("images/"+pictName);
            //a receivingLC objektum nyitott kapcsolatának zárása(*5)
            receivingLC.close();
      };
      //a receivingLC objektumon keresztül egy 'currentConnectionName' nevű kapcsolat indítása(*6)
      receivingLC.connect("currentConnectionName");
};

Nézzük részletesebben:
*1 - a leendő popup ablak helyének meghatározása valójában csak az esztétika miatt lehet fontos, a monitor felbontásától függően a popup ablakot középre helyezzük
*2 - popup ablak nyitása javascript segítségével. Ebben nem merülnék el részletesebben, az online megtalálaható számtalan segédlet (pld itt) segíthet a megértésben.
*3 - A localConnection objektum hivatott párhuzamosan (egyazon, vagy különbőző böngészőablakokban, esetleg standalone player(ek)ben) futó swf-ek közti kommunikáció kezelésére. Itt most csak ennek a jelen feladathoz szükséges részleteivel fogunk foglalkozni, bővebb információkért ugyancsak a világháló böngészését javaslom (esetleg itt és itt).
Létrehozunk tehát egy receivingLC nevű localConnection objektumot, ami a majdan léthezandó pictnamesender.swf fájlunkkal tartja a kapcsolatot.
*4 - a localConnectDataCame névre keresztelt függvényt (egyetlen paramétere a 'pictName', amely a feltöltendő képfájl nevét fogja tartalmazni) fogjuk meghívni a pictnamesender.swf fájlunkból (lásd később). Amikor tehát a pictnamesender.swf fájl a currentConnectionName nevű kapcsolaton keresztül meghívja majd ezt a függvényt, akkor a fenti actionscript szerint a kapott adatot (pictName - a képfájl neve) kiírja a pictname_textfield nevű szövegmezőbe, illetve betölti a holder_mc nevű üres mc-be az 'images' könyvtárból (a feltöltés helyét később határozzuk meg).
*5 - amikor a megfelelő függvényhívási kérés megérkezett, és 'elindítottuk' a kiíratási illetve képbetöltési folyamatot, zárjuk (töröljük) a receivingLC objektum kapcsolatát.
*6 - az upload_btn lenyomására nyitunk a receivingLC objektum számára egy currentConnectionName nevű kapcsolatot. Ugyane nevű kapcsolatot fogjuk használni majd a függvényhívási kérés küldésére a pictnamesender.swf fájlban. (lásd később)

Ezzel gyakorlatilag kész is vagyunk ezzel a fájllal, készítsünk számára egy html fájlt (image_upload.html), amibe beágyazzuk, majd akár be is csukhatjuk (publish - save - close).

 
     
 
 

© Devnet.hu. A segédletek semmilyen formában nem másolhatók, publikálhatók a Devnet.hu és a szerzők közös írásos engedélye nélkül.
 
. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .