2010-08-30 3 views
0

Fondamentalement, j'utilise un iframe pour télécharger un fichier. Je définis la source de l'iframe sur le fichier que je veux télécharger. Ce problème n'est pas que je ne peux pas obtenir une boîte de dialogue de téléchargement. Le problème est que je ne peux pas fermer la fenêtre après le démarrage du téléchargement.Est-il possible d'envoyer un fichier html avec un fichier téléchargeable en une seule réponse?

Ce que je pensais, c'est que je pouvais renvoyer un fichier avec cet en-tête. Ensuite, je voudrais renvoyer un autre code HTML pour l'affichage du navigateur. Le point entier du deuxième fichier est de fermer la fenêtre de navigation.

BTW: Il est beaucoup trop tard pour quitter les popups.

Répondre

0

Le point entier du deuxième fichier consiste à fermer la fenêtre de navigation.

Vous n'avez pas besoin de cela. Le simple paramétrage de cet en-tête sur la réponse avec le fichier à télécharger est plus que suffisant pour obtenir un dialogue Enregistrer sous. Vous n'avez pas besoin d'ouvrir le lien dans une nouvelle fenêtre/vide. Laissez simplement le lien/formulaire pointer vers l'URL désirée et il ouvrira le dialogue Enregistrer sous. La page actuellement ouverte restera la même.

+0

J'ai besoin de fermer la fenêtre, aussi, après le téléchargement du fichier. Fondamentalement, je pourrais utiliser window.close, mais je ne sais pas quand l'appeler. Je dois attendre la réponse. C'est pourquoi j'espérais pouvoir renvoyer des fichiers à la fois. Un pour le téléchargement, et un avec JavaScrip pour fermer la fenêtre. –

0

Non, vous ne pouvez pas envoyer à la fois un fichier et une page dans la même réponse.

Si vous voulez deux réponses, vous devez envoyer deux demandes.

Vous pouvez lancer le téléchargement, utilisez un délai d'attente pour fermer la fenêtre après le téléchargement a commencé:

window.location.href = 'test.txt'; 
window.setTimeout(function(){ 
    window.close(); 
}, 100); 
+0

Je dois envoyer deux fichiers, un pour le téléchargement, un pour l'affichage. Je pense qu'une réponse peut faire cela, parce que parfois le navigateur télécharge l'image en même temps et de telles choses. Je ne sais pas grand-chose sur les réponses multipartites. –

+0

Le délai d'attente est correct pour certains fichiers, mais que faire si le fichier est volumineux et prend quelques minutes à télécharger? Y a-t-il un moyen de contourner ceci? –

+0

@Grae: Le téléchargement devrait continuer même si vous fermez la fenêtre. Lorsque vous définissez 'href', il ne prend effet que lorsque vous revenez du script, donc le timeout est là pour que' href' puisse prendre effet avant de fermer la fenêtre. – Guffa

Questions connexes