di: Davide Beltrame 25 Luglio 2008
Fino all'uscita di Flash 8, eseguire e gestire il download e l'upload di un file sul server, tramite Flash, era quasi un'avventura per pochi temerari: alcuni sviluppatori avevano reso disponibili dei componenti, tuttavia spesso c'erano problemi di compatibilità tra i diversi browser. Il download era invece limitato all'uso del comando getURL, tuttavia, in caso di file apribili con il browser (nativamente o tramite plugin, per esempio i file in PDF), era necessario comprimere i file in formato ZIP o comunque in formati che il browser non provasse ad eseguire direttamente.
Con Flash 8 le cose cambiarono notevolmente, grazie all'avvento della classe FileReference che permette la gestione di download e upload di file tramite Flash (anche se per l'upload è necessario appoggiarsi ad un file PHP, .NET o affine presente sul server).
In questo articolo vedremo come usare la classe FileReference (in Actionscript 3) per caricare un file sul server e come usarla per eseguire il download di un file, anche se in formati che verrebbero normalmente aperto dal browser.
Va notato come la classe FileReference non ha subito particolari modifiche alla sintassi nella trasposizione da Actionscript 2 ad Actionscript 3, tuttavia in quest'ultima versione va utilizzata la nuova gestione degli eventi prevista in AS3, inoltre sia per il download che per l'upload viene utilizzata la classe URLRequest.
Vediamo allora come sia possibile caricare un file sul server dal proprio PC: vedremo come far aprire a Flash la finestra di dialogo per la scelta del file, passeremo le informazioni necessarie per il trasferimento a un file PHP, quindi, grazie ai numerosi eventi messi a disposizione dalla classe FileReference, monitoreremo il trasferimento (progresso e completamento, o eventuali errori).
Per prima cosa impostiamo le variabili relative all'URL del file PHP (o affine) che sposterà fisicamente il file, all'oggetto URLRequest che useremo per inviare il file selezionato dall'utente da Flash a PHP e all'oggetto FileReference che gestirà le diverse operazioni.
Listato 1. Imposta le variabili
// importazione dei package
import flash.net.URLRequest
import flash.net.FileReference
// Imposto il file server-side che uploaderà fisicamente il file
var uploader:String= "uploader.php"
// Creo l'URLRequest che comunicherà con l'uploader
var comunicator:URLRequest = new URLRequest()
// Creo la FileReference che gestirà le operazioni
var fr:FileReference = new FileReference()
Possiamo ora associare alla variabile fr gli eventi che vogliamo monitorare: la classe FileReference offre un buon numero di eventi, inoltre possiamo interfacciare un oggetto di tipo FileReference con alcuni eventi di tipoEvent, HTTPStatusEvent, IOErrorEvent e SecurityErrorEvent.
In generale la sintassi per ogni evento è la seguente
oggetto.addEventListener(evento, funzione)
Dove evento è il tipo di evento, mentre funzione è la funzione da richiamare quando l'evento impostato si verifica; ecco quindi come associare i diversi eventi al nostro oggetto FileReference.
Listato 2. Associa gli eventi all'oggetto
// si verifica alla selezione del file
fr.addEventListener(Event.SELECT, selezionato);
// si verifica all'avvio dell'upload
fr.addEventListener(Event.OPEN, aperto);
// si verifica periodicamente e informa sul progresso dell'invio del file
fr.addEventListener(ProgressEvent.PROGRESS, progresso);
// si verifica quando il file è stato completamente inviato
fr.addEventListener(Event.COMPLETE, completo);
// si verifica al completamento dell'upload
fr.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, ritornato);
// si verifica se l'utente annulla la selezione del file
fr.addEventListener(Event.CANCEL, errore);
// si verifica se l'upload non va a buon fine
fr.addEventListener(HTTPStatusEvent.HTTP_STATUS, errore);
// si verifica se si interrompe la comunicazione con il file server-side
fr.addEventListener(IOErrorEvent.IO_ERROR, errore);
// si verifica in caso di conflitti di sicurezza con le impostazioni del player
fr.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errore);
|
Creare l'effetto Time Machine di Leopard in Actionscript 3.0 |
Guida ActionScript 3 di baseApprendere, in poche lezioni, le nozioni fondamentali per gestire... |
Guida FlashDevelopInstallare e usare FlashDevelop, potente ambiente di sviluppo open... |
Guida Flash Builder 4Un percorso alla scoperta delle potenzialità più importanti... |
Ogni martedì, guide, articoli, FAQ, movie, audio su Macromedia Flash e Actionscript direttamente nella tua casella di posta
Iscriviti alla newsletter
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |