. .. : 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

     
 

A feltöltött kép megjelenítése

Ismét nyissuk meg a Flashben egy új fájlt (pictnamesender.fla), a mérete legyen 460*90 pixel (mivel ez is a nyitott popup ablakunkban fog megjelenni). Hozzunk létre benne egy bezáró gombot (close_btn), és két dimanikus textfieldet (message_textfield, countdown_textfield) körülbelül az alábbi elrendezés szerint:


Ennek a fájlnak az egyetlen feladata, hogy php általi megnyitása során kapott adatot (amit a pict_to_send változó tartalmaz rögtön betöltődés után) egy localConnection objektum kapcsolaton keresztül átadja az image_upload.swf -nek. Emellett azért némi minimális ellenőrzést és kényelmi szolgáltatást is hozzácsapunk, hogy a felhasználó úgyahogy képben, legyen hogy mi is történik éppen....

Az 'actions' layerre a következő kódot írjuk:

// néhány alapbeállítás
Stage.scaleMode = "noScale";
Stage.showMenu = false;
// alapmegjelenés meghatározása
close_btn._visible = 0;
countdown_textfield.text=""
message_textfield.text=""
// ablakbezáró gomb (*1)
close_btn.onRelease = function() {
      getURL("javascript: self.close ()");
};
// automatikus ablakbezárás (*2)
cc = 5;
function count() {
      countdown_textfield.text = cc+" másodperc múlva";
      cc--;
      if (cc == 0) {
            getURL("javascript: self.close ()");
      }
}
// localConnection objektum létrehozása (*3)
sendingLC = new LocalConnection();
// localConnection objektum kapcsolatának ellenőrzés a küldés után (*4)
sendingLC.onStatus = function(infoObject) {
      if (infoObject.level == "error") {
            message_textfield.text = "Probléma adódott a "+pict_to_send+
" fájl adatátvitelénél, próbálkozz újra.";
            close_btn._visible = 1;
      } else {
            message_textfield.text = "A "+pict_to_send+" fájl megjelenítésre kész";
            close_btn._visible = 1;
            setInterval(count, 1000); //(*2)
      }
};
//az adatok küldése a kapcsolaton keresztül (*5)
sendingLC.send("currentConnectionName", "localConnectDataCame", pict_to_send);

*1 - kényelmi szempontból készíthetünk egy, a popup ablakot bezárni hivatott gombot, hogy miután a megfelelő visszajelzést megkapta, a felhasználó e módon is bezárhassa az ablakot (megjegyzendő, hogy a "javascript: self.close ()" csak javascriptből nyitott ablakok bezárására alkalmas)
*2 - amennyiben a képfájl nevének átadása sikeres volt, ezt a függvényt egy setInterval -on keresztül meghívva késleltetetten tudjuk automatikusan bezárni a böngészőablakot (jelen esetben ez 5 másodperc)
*3 - Ahhoz, hogy kommunikálhassunk egy már létező localConnection kapcsolaton keresztül, itt is létre kell hoznunk egy localConnection objektumot (sendingLC)
*4 - a sendingLC objektum onStatus függvénye fogja figyelni hogy sikerült-e a kapcsolatfelvétel a image_upload.swf fájllal. Két lehetséges értékkel tud visszatérni (amit az infoObject objektum level paramétere tartalmaz - bővebben erről ugyancsak itt): 'error', és 'status'. Amennyiben nem sikerült a kapcsolatfelvétel (pld. mert időközben a user bezárta a másik böngészőablakot), úgy hibaüzenetet küldünk, ha viszont igen, akkor ezt jelezzük, és indítjuk az automatikus ablakbezárás függvényét.
*5 - és végül az egész folyamat lelke: a sendingLC objektum send metódusa a "currentConnectionName" nevű kapcsolaton keresztül (emlékezzünk, hogy a így neveztük el a kapcsolatot az image_upload.swf fájlban is) fogja utasítani a fogadó fájlt, hogy futtassa a "localConnectDataCame" függvényt, amihez paraméterként a pict_to_send változót küldi (ami ugyebár a képfájl neve.) Itt érdemes egy pillanatra visszapillantani a segédlet elejére, és láthatjuk, hogy ott az a függvény az, ami felelős a fájl megjelenítéséért és nevének kiiratásáért....

Publikáljuk a mozinkat, és kész is volnánk.
Jöhet a tesztelés:

Ez a teszt annyiban különbözik a fentebb vázolt rendszertől, illetve a forrásfájlban találhatótól, hogy - az SWF.hu tárhelyét kímélendő - a feltöltött kép mindenképp 'uploaded_image.jpg' néven kerül mentésre, ezáltal felülírva az előző tesztelő feltöltötte képet, illetve az image_upload.swf megnyitásakor automatikusan be is tölti ezt a fájlt (a legutóbb feltöltöttet)...

Itt a végén megjegyzendő, hogy a bemutatott példa csak egy elméleti módszer az swf fájlba való képfeltöltés megoldására, de nem tér ki olyan funkcionálisan, avagy esztétikailag szükséges vagy hasznos további részletekre, úgymint a feltöltött kép PHP-ben való átméretezése megfelelő méretűre, különböző egyéb hibalahetőségek ellenőrzése, és annak kezelése akár PHP-n, akár Flashen belül, nagyobb képek esetén preloader alkalmazása, illetve a kép megjelenítésének módja az swf-en belül, stb. Ugyanakkor a módszer kis fantázia segítségével flash alapú adminisztrációs felületek képfeltöltési lehetőséggel való bővítésenek, vagy akár fotóblogok üzemeltetésének lehetőségét is magában rejti.

 
     
 
 

© 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 >>> : .. .