2009-04-17 4 views
1

Je suis un développeur newb en ce qui concerne Flex et Flash. Voici ce que j'essaie de faire:Flex 3 - Envoyer un HTTP Obtenir une requête de Flash et vouloir Firefox pour montrer Open With Box

1) Envoyer une requête HTTP à notre serveur (avec une URL personnalisée). L'URL indique essentiellement au serveur d'envoyer des données au format CSV. 2) Le serveur envoie une réponse 200 OK, qui a Content-Type: application/csv et la charge utile est une donnée CSV pure. Ce que je souhaite faire est, quand firefox obtient cette réponse de 200 OK, je veux qu'il montre la norme Ouvrir avec la boîte (celle qui apparaît quand vous téléchargez un certain fichier).

J'ai essayé de le faire avec HTTPService. J'ai un bouton "Export to CSV" sur le composant flash. En cliquant dessus, le composant flash est capable d'envoyer la requête HTTP avec succès. Cependant, je ne veux pas que le composant Flash gère la réponse, donc je n'ai pas la balise '' result '' définie. Mais rien ne se passe. Toutes les suggestions sur la façon de le faire.

Répondre

0

Vous aurez besoin de Flash pour au moins répondre à la demande, alors vous appelez navigateToURL pour aller à votre dossier, quelque chose comme ceci:

private function resultHandler(event:ResultEvent):void 
{ 
    navigateToURL(new URLRequest('createdFile.csv','_self')); 
} 
0

Votre serveur a besoin d'envoyer un en-tête avec le fichier:

Content-Disposition: attachment; filename=foo.csv 

Edit: clarifions que, avec une explication:

Lorsque vous faites ceci:

navigateToURL(new URLRequest('foo.csv'), '_self'); 

Vous demandez effectivement au navigateur d'obtenir foo.csv. Maintenant, pour que le navigateur affiche la boîte de dialogue Enregistrer, il doit savoir que les données doivent être traitées en tant que pièce jointe. L'en-tête:

Content-Disposition: attachment 

accomplit juste cela. Mais souvent vous voulez aussi que le navigateur sache le nom du fichier (et le type du fichier, en utilisant l'extension), c'est pourquoi vous ajoutez le bit du nom de fichier après le point-virgule.

+0

Hey Rytmis, Merci beaucoup. La combinaison de navigateToURL et de Content-Disposition a fonctionné. Gloire!!! – Kash

+0

Merci, ceci a été utile. Une correction que j'ai est le paramètre "window" est en fait un paramètre de la fonction navigateToURL et non un paramètre à l'objet URLRequest. Cela devrait donc ressembler à ça ... navigateToURL (new URLRequest ('foo.csv'), '_ self'); – Kevin

+0

Merci, fixé cela. Gee, cette question me donne vraiment envie d'afficher une réponse - non seulement l'OP ne l'a pas accepté, mais je reçois aussi des downvotes, même si la réponse est, en fait, correcte (sauf la parenthèse mal placée). :RÉ – Rytmis

Questions connexes