2011-09-30 15 views
1

Je travaille actuellement sur un projet Flex3/blazeDS/Spring/Oracle. Mon exigence est d'afficher une liste de fichiers d'un serveur FTP externe dans une grille, l'utilisateur peut sélectionner un ou plusieurs fichiers à télécharger, et si l'utilisateur sélectionne plusieurs fichiers, je devrais tarer les fichiers sur le serveur FTP et télécharger le fichier tar à partir de FTP serveur vers le disque de l'utilisateur. Selon ma compréhension sur le téléchargement de fichiers dans Flex, nous avons 2 façons de le faire. 1) Référence du fichier 2) Utilisation de la commande navigateURL et appel JSP/Servlets côté serveur pour télécharger les fichiers.Flex Télécharger le fichier

1) Pour FileReference nous devons d'abord télécharger les données et inviter l'utilisateur à enregistrer le fichier en cliquant sur un bouton. Nous ne pouvons pas afficher la boîte de dialogue "Enregistrer" sans l'événement click pour des raisons de sécurité dans Flex (Workaround). Mais mon client déteste ce processus parce que ses deux étapes et il le veut en une seule étape comme le téléchargement de fichiers normal avec seulement "Enregistrer" dialogue. Puis j'ai essayé la deuxième option.

2) navigateURL. Ouvrez une nouvelle fenêtre pour envoyer une demande d'URL de message à JSP/Servlets et ouvrez la boîte de dialogue "Enregistrer". Le problème auquel je suis confronté ici est que la fenêtre pop-up ne se ferme pas une fois le téléchargement terminé. Le paramètre navigateURL ne renvoie aucune référence à la fenêtre pour fermer la fenêtre. J'ai même essayé différents types de contenu et en-têtes et script java mais aucun ne semble fonctionner. La fenêtre se ferme lorsqu'il s'agit d'un fichier unique et non pour le fichier tar ou zip. Je voudrais télécharger la fenêtre contextuelle pour tout type de téléchargement. J'utilise IE7.

Toute aide ou toute autre solution possible sont appréciées. Merci d'avance.

Répondre

1

Vous pouvez utiliser une iframe masquée. De cette façon, il n'y a pas de popup/nouvel onglet impliqué, juste la boîte de dialogue "save".

Pour cela, vous devez utiliser du JavaScript sur la page. Quelque chose comme ça devrait le faire:

<script language="JavaScript" type="text/javascript"> 
function makeFrame(theUrl) { 
    ifrm = document.createElement("IFRAME"); 
    ifrm.setAttribute("src", theUrl); 
    ifrm.style.width = 640+"px"; 
    ifrm.style.height = 480+"px"; 
    document.body.appendChild(ifrm); 
} 
</script> 

Pour appeler la fonction de Flex utiliser les ExternalInterface

+0

Merci pour votre réponse précieuse. Je dois faire une réponse à la page JSP avec des fichiers sélectionnés par l'utilisateur. Si j'utilise l'ExternalInterface, il s'agirait d'une requête get. S'il vous plaît me mettre à jour avec d'autres solutions possibles. –

+0

Utilisez un formulaire caché sur la page qui sera soumise à l'iframe. Plus d'infos ici http://stackoverflow.com/questions/168455/how-do-you-post-to-an-frrame –

+0

En utilisant ExternalInterface et JavaScript vous remplissez le formulaire et le soumettre –