2010-05-24 6 views
0

Je construis une application Flex qui me demande de télécharger des fichiers.FileReference.download() ne fonctionne pas

J'ai le code suivant:

public function execute(event:CairngormEvent) : void 
{ 
    var evt:StemDownloadEvent = event as StemDownloadEvent; 
    var req:URLRequest = new URLRequest(evt.data.file_path); 
    var localRef:FileReference = new FileReference(); 

    localRef.addEventListener(Event.OPEN, _open); 
    localRef.addEventListener(ProgressEvent.PROGRESS, _progress); 
    localRef.addEventListener(Event.COMPLETE, _complete); 
    localRef.addEventListener(Event.CANCEL, _cancel); 
    localRef.addEventListener(Event.SELECT, _select); 
    localRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, _securityError); 
    localRef.addEventListener(IOErrorEvent.IO_ERROR, _ioError); 

    try { 
     localRef.download(req); 
    } catch (e:Error) { 
     SoundRoom.logger.log(e); 
    } 
} 

Comme vous pouvez le voir, j'accroché chaque écouteur d'événements possibles. Quand ceci s'exécute, j'obtiens la fenêtre de navigation, et suis capable de choisir un emplacement, et clique sur sauvegar- de. Après cela, rien ne se passe.

Chaque gestionnaire d'événement est connecté à mon enregistreur, et aucun n'est appelé! Y a-t-il quelque chose qui manque ici?

+0

1. Le chemin du fichier est-il correct? 2. Existe-t-il une application principale qui génère le fichier? Est-ce que ça marche? Existe-t-il des tests écrits pour vérifier cela? – Sri

Répondre

1

Le problème semble être que ma commande est détruite avant que cela puisse se terminer. Pour une preuve de concept, j'ai défini ma variable localRef comme étant statique au lieu d'une variable d'instance, et tout s'est déroulé avec succès! Je suppose que les commandes de Cairngorm se tuent dès que possible!

+0

Vous n'avez pas de variable d'instance. Vous avez une variable locale, qui va sortir de la portée lorsque la fonction retourne. Par conséquent, il est éligible pour la collecte des ordures. Avez-vous essayé de déclarer localRef en tant que variable d'instance? (c'est-à-dire dans votre classe def, mais en dehors de la méthode). Il me semble que l'utilisation de statique demande des ennuis ... Maintenant, si votre commande est réellement collectée (je ne suis pas familier avec Cairngorm) alors, vous devrez peut-être recourir à l'électricité statique (ou changer votre approche) –

+0

mauvais mot (instance sur locale), ma solution a fonctionné indépendamment B-) – Lowgain