Flash  »  Articoli  »  Actionscript 

Upload e download in Actionscript 3

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.

Upload di un file tramite Flash

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);

Guide Flash

Guida ActionScript 3 di base

Apprendere, in poche lezioni, le nozioni fondamentali per gestire...

Guida FlashDevelop

Installare e usare FlashDevelop, potente ambiente di sviluppo open...

Guida Flash Builder 4

Un percorso alla scoperta delle potenzialità più importanti...

Altre guide

Newsletter @Flash

Ogni martedì, guide, articoli, FAQ, movie, audio su Macromedia Flash e Actionscript direttamente nella tua casella di posta

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti