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 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
, 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