Quick Tips: Last ned filer Via SWF Bruke FileReference

Quick Tips: Last ned filer via SWF Bruke FileReference
Del
Del
Del
Del

Denne Cyber ​​Monday Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.

Denne Quick Tips dekker hvordan du bruker AS3 er FileReference klasse for å laste ned og lagre eksterne filer fra Flash RIA uten behov for server side scripts som PHP. Alt vi trenger er banen til filen vi ønsker å la brukeren laste ned.




Endelig resultat Forhåndsvisning

La oss ta en titt på det endelige resultatet vi skal jobbe mot:



Trinn 1:. Opprett en ny Actionscript 3.0 File

Opprett en ny FLA fil og lagre den i din prosjektmappen



Trinn 2: Klargjør UI

For dette Quick Tips, laget jeg et grensesnitt. Du kan laste den ned fra linken øverst på siden, eller du kan lage din egen.

I min FLA fil, er det tre bilder som representerer de filtyper, og tre nedlastings knapper som er MovieClip Objekter

btn_img_download for Miki-monk.jpg fil

btn_mp3_download for noen-audio.mp3 fil

btn_txt_download for dummy-text.rtf fil

og en fremdriftslinje nederst for å spore nedlastingsfremdriften plassert på scenen



Trinn 3:. Lag Dokument Class

Vi vil skrive vår kode i et dokument Class-fil. Hvis du ikke er kjent med dokument Class, kan du få relevant informasjon fra en annen ActiveTuts + Quick Tips

La oss lage vår Document Class-fil.; klikk på Fil > New velg deretter "Actionscript 3.0 Class Redd AS filen til samme sted som din FLA fil

Knytt FLA filen til Action Script filen du opprettet - bare skrive navnet.. av AS-filen i relaterte felt i FLA fil



Trinn 4:. Bruke FileReference () i Våre etiske

Her er dokument klasse som jeg brukte i denne hurtig . Tips Vennligst les kommentarene i koden for å forstå klassen atferd
pakke {import flash.display.MovieClip;. import flash.display.Sprite, import flash.events.MouseEvent, import flash.events.ProgressEvent; import flash .net.FileReference, import flash.net.URLRequest, import flash.text.TextField, import flash.events.Event; public class FileRefTut strekker Sprite {//Last ned knapper på Stage.We må definere dem som offentlige variabler i vår .. dokument klasse for å kunne bruke dem //Ellers får vi feilmelding fra Flash offentlig Var btn_img_download: MovieClip, btn_txt_download: MovieClip, btn_mp3_download: MovieClip, mc_loaded: MovieClip; //Progress Bar offentlig Var mc_progress: MovieClip, //Dynamic Textfield holder seg under Progress Bar. txt_prog: Textfield; //Arr_Links hold listen over filer. private Var Arr_Links: Array; //Standardbane der nedlastingen er lagret. //Du endre det i henhold til ditt oppsett. //Dette er i forhold til SWF. private Var DefaultPath: String = "assets /"; //File Name privat Var urlName: String; //forekomst av FileReference () Klasse privat Var fr: FileReference; //url til den anmodede filer private Var req: URLRequest; offentlig funksjon FileRefTut (): void {//Set buttonMode å true til å endre musmarkøren til hånd icon btn_img_download.buttonMode = btn_txt_download.buttonMode = btn_mp3_download.buttonMode = true; //Set bredde mc_loaded fremdriftslinjen til 0 når det ikke er noe å laste ned mc_loaded.scaleX = 0; //Lag liste over filer som skal lastes ned //Disse filene må være i mappen spesifisert av DefaultPath Arr_Links = ["miki-monk.jpg", "noen-audio.mp3", "dummy-text.rtf"]; //Opprett en forespørsel objekt req = new URLRequest (); //Opprett en forekomst av FileReference Class fr = new FileReference (); //ProgressEvent å skalere Progress Bar //Vi må legge ProgressEvent List basert på fremdriften av FileReference fr.addEventListener (ProgressEvent.PROGRESS, progressHandler); //Bruk COMPLETE hendelse for å avgjøre når nedlastingen er ferdig fr.addEventListener (Event.COMPLETE, completeHandler); //Tilstelninger Lyttere for nedlasting Knapper //Når brukeren klikker noen nedlastingsknappen, ring downloadFile (e: MouseEvent) -funksjonen btn_img_download.addEventListener (MouseEvent.CLICK, downloadFile); btn_mp3_download.addEventListener (MouseEvent.CLICK, downloadFile); btn_txt_download.addEventListener (MouseEvent.CLICK, downloadFile); } Private funksjon downloadFile (e: MouseEvent): void {//satt nedlastingen banen til urlName variable i henhold til klikket nedlastingsknappen bryter (e.target.name) {case "btn_img_download": urlName = Arr_Links [0]; gå i stykker; case "btn_mp3_download": urlName = Arr_Links [1]; gå i stykker; case "btn_txt_download": urlName = Arr_Links [2]; gå i stykker; } //Endre tekstmelding "fremskritt" til "ned ..." på txt_prog Dynamic TextFiled txt_prog.text = "nedlasting ..."; //Angi url til req variable req.url = DefaultPath + urlName; //Downlaod forespurte filen fr.download (req); } Private funksjon progressHandler (event: ProgressEvent): void {//Vi skalerer fremdriftslinjen i henhold til rasjon av (event.bytesLoaded /event.bytesTotal) //Så, når scaleX når 1, betyr det at nedlastingen er ferdig .. mc_loaded .scaleX = (event.bytesLoaded /event.bytesTotal); } Private funksjon completeHandler (hendelse: Hendelse): void {//nullfremdriftslinjen til 0 etter nedlastingen er ferdig mc_loaded.scaleX = 0; //endring tekstmelding txt_prog.text = "download ferdig"; }}}

Som du ser nøkkelen er å bruke FileReference med en URLRequest, for å muliggjøre nedlasting av filer fra vår server. I utgangspunktet vi trenger 3 ting:


    Opprett en forekomst av FileReference Class
    privat Var fr: FileReference;
    Opprett en forekomst av URLRequest Class
    privat Var req: URLRequest;
    Angi filbanen til url parameter av URLRequest eksempel og kaller nedlastingsmetode FileReference Class
    req.url = DefaultPath + urlName; fr.download (req);

    Merk: Hvis du ønsker å laste ned filer fra en annen vert, må du sette en crossdomain.xml filen i den vert. La oss si, du sette swf filen inn www.host-a.com
    , og du ønsker å laste ned filer fra www.host-b.com med swf fil i www.host-a.com. For å gjøre det, må du permisson fra www.host-b.com
    . Så må du laste opp et crossdomain.xml fil inn www.host-b.com. Hvis du wawnt lære mer om crossdomain.xml filer, det er en annen fin Quick Tips her.



    Konklusjon

    I denne hurtig Tips lærte vi hvordan du laster ned filer fra en server, via Flash, til det lokale systemet uten behov for server side scripts som PHP. Håper du liker denne Quick Tips og takk for at du leser det. Hvis du har noen spørsmål, vennligst send en kommentar nedenfor. Anmeldelser