Sfat rapid descărcați fișierele prin intermediul SWF-urilor utilizând FileReference

Acest sfat rapid se referă la modul de utilizare a clasei FileReference AS3 pentru a descărca și a salva fișiere externe din Flash RIA fără a fi nevoie de scripturi de pe server cum ar fi PHP. Tot ce avem nevoie este calea fișierului pe care dorim să o lăsăm să descarce utilizatorul.


Rezultatul final al rezultatelor

Să aruncăm o privire asupra rezultatului final pe care îl vom strădui:


Pasul 1: Creați un nou fișier ActionScript 3.0

Creați un fișier nou .fla și salvați-l în folderul proiectului.


Pasul 2: Pregătiți interfața utilizator

Pentru acest sfat rapid, am creat o interfață. Puteți să-l descărcați de la link-ul din partea de sus a paginii sau puteți să vă creați unul.

În fișierul meu .fla există trei imagini care reprezintă tipurile de fișiere și trei butoane de descărcare care sunt MovieClip Obiecte

  • btn_img_download pentru fișierul miki-monk.jpg
  • btn_mp3_download pentru fișierul some-audio.mp3
  • btn_txt_download pentru fișierul dummy-text.rtf

și o bara de progres în partea de jos pentru a urmări progresul descărcării plasat pe Etapă.


Pasul 3: Creați o clasă de documente

Vom scrie codul nostru într-un fișier de Document Class. Dacă nu sunteți familiarizat cu Clasa de documente, puteți obține informații conexe de la un alt tip de ajutor ActiveTuts + rapid.

Să creăm fișierul nostru de Document Class; faceți clic pe Fișier> Nou apoi selectați "Class ActionScript 3.0. Salvați fișierul AS în aceeași locație ca fișierul dvs. .fla.

Conectați fișierul .fla la fișierul Action Script pe care l-ați creat - scrieți pur și simplu numele fișierului dvs. AS în câmpul asociat din fișierul .fla.


Pasul 4: Utilizarea Fișier de referință() în Codul nostru

Iată clasa de documente pe care am folosit-o în acest sfat rapid. Citiți comentariile din cod pentru a înțelege comportamentul clasei.

 pachet import flash.display.MovieClip; import flash.display.Sprite; importul flash.events.MouseEvent; import flash.events.ProgressEvent; import flash.net.FileReference; import flash.net.URLRequest; import flash.text.TextField; importul flash.events.Event; clasa publica FileRefTut extinde Sprite // Download Buttons in the Stage. Trebuie sa le definim ca variabile publice in clasa noastra de documente pentru a le folosi. // În caz contrar, vom primi un mesaj de eroare de la Flash. public var btn_img_download: MovieClip, btn_txt_download: MovieClip, btn_mp3_download: MovieClip, mc_loaded: MovieClip; // Progress Bar public mc_progress: MovieClip, // Dynamic TextField rămâne sub bara de progres. txt_prog: TextField; // Arr_Links țineți lista fișierelor. privat Var Arr_Links: Array; // Calea implicită unde este stocată descărcarea. // Schimbați-l în funcție de configurația dvs. // Aceasta se referă la SWF. private var defaultPath: String = "active /"; // Numele fișierului privat var urlName: String; // instanță de FileReference () Clasă privată fr: FileReference; // url al fișierelor solicitate priv var var: URLRequest; funcția publică FileRefTut (): void // Setați buttonMode to true pentru a schimba pictograma cursorului mouse-ului în mână btn_img_download.buttonMode = btn_txt_download.buttonMode = btn_mp3_download.buttonMode = true; // Setați lățimea barei de progres mc_loaded la 0 atunci când nu există nici o descărcare mc_loaded.scaleX = 0; // Crearea listei de fișiere de descărcat / // Aceste fișiere trebuie să fie în folderul specificat de defaultPath Arr_Links = ["miki-monk.jpg", "some-audio.mp3", "dummy-text.rtf"]; // Creați un obiect de solicitare req = new URLRequest (); // Creați o instanță a clasei FileReference fr = new FileReference (); // ProgressEvent la scara Progress Bar // Trebuie să adăugăm ProgressEvent Listener pe baza progresului FileReference fr.addEventListener (ProgressEvent.PROGRESS, progressHandler); // Utilizați COMPLETE Event pentru a determina momentul în care descărcarea a terminat fr.addEventListener (Event.COMPLETE, completeHandler); // Ascultători de evenimente pentru butoanele de descărcare // Când utilizatorul face clic pe orice buton de descărcare, sunați la funcția downloadFile (e: MouseEvent) btn_img_download.addEventListener (MouseEvent.CLICK, downloadFile); btn_mp3_download.addEventListener (MouseEvent.CLICK, downloadFile); btn_txt_download.addEventListener (MouseEvent.CLICK, downloadFile);  funcția privată downloadFile (e: MouseEvent): void // setați calea de descărcare la variabila urlName în funcție de butonul Download Download (e.target.name) case "btn_img_download": urlName = Arr_Links [0]; pauză; cazul "btn_mp3_download": urlName = Arr_Links [1]; pauză; cazul "btn_txt_download": urlName = Arr_Links [2]; pauză;  // modificați mesajul "progres" la "descărcare?" la txt_prog Dynamic TextFiled txt_prog.text = "descărcarea?"; // Alocați url la variabila req req.url = defaultPath + urlName; // Downlaod a solicitat fișierul fr.download (req);  funcția privată progressHandler (eveniment: ProgressEvent): void // Se scalarează bara de progres în funcție de rația lui (event.bytesLoaded / event.bytesTotal) // Deci, când scaleX ajunge la 1, înseamnă că descărcarea este terminată? mc_loaded.scaleX = (event.bytesLoaded / event.bytesTotal);  funcția privată completeHandler (eveniment: Eveniment): void // restabilirea bara de progres la 0 după terminarea descărcării mc_loaded.scaleX = 0; // modificarea mesajului text txt_prog.text = "descărcare terminată"; 

După cum puteți vedea cheia este de a utiliza Fișier de referință cu URLRequest, pentru a permite descărcarea fișierelor de pe serverul nostru. Practic avem nevoie de 3 lucruri:

  1. Creați o instanță de Fișier de referință Clasă
  2.  privat fr: FileReference;
  3. Creați o instanță de URLRequest Clasă
  4.  privat var req: URLRequest;
  5. Alocați calea fișierului la URL-ul parametru de URLRequest instanță și metoda de descărcare a apelurilor din Clasa FileReference
  6.  req.url = defaultPath + urlName; fr.download (req);

Notă: Dacă doriți să descărcați fișiere de la o altă gazdă, trebuie să puneți un a crossdomain.xml fișier în acea gazdă. Să spunem că ați pus fișierul swf în www.host-a.com, și doriți să descărcați fișiere de pe www.host-b.com cu fișierul swf în www.host-a.com. Pentru a face asta, ai nevoie de permisiune www.host-b.com. Deci, trebuie să încărcați a crossdomain.xml fișier în www.host-b.com. Dacă veți afla mai multe despre crossdomain.xml fișiere, există un alt Sfat rapid aici.


Concluzie

În acest sfat rapid, am învățat cum să descarcăm fișiere de pe un server, prin Flash, în sistemul local fără a fi nevoie de scripturi de pe server cum ar fi PHP. Sper că vă place acest sfat rapid și vă mulțumesc că ați citit-o. Dacă aveți întrebări, vă rugăm să trimiteți un comentariu de mai jos.

Cod