2009-10-10 9 views
0

J'ai une boîte de dialogue ouverte lorsqu'un utilisateur clique sur une URL. Dans cette boîte de dialogue, j'ai deux boutons, "OK" (qui ferme la boîte de dialogue) et "télécharger le fichier" (qui, je voudrais avoir le fichier que je viens de créer via PHP être téléchargé lorsque cliqué). Comment puis-je obtenir cette fonctionnalité avec le bouton "Télécharger le fichier"?Télécharger le fichier lorsque l'utilisateur clique sur le bouton de la boîte de dialogue

J'ai essayé $ .get mais cela ne récupère que les données du fichier et ne demande pas à l'utilisateur de télécharger le fichier.

Merci.

Répondre

1

l'intérieur du gestionnaire de clic pour ce bouton:

window.location.href = "path/to/file/on/server.txt"; 

Par ailleurs, vous n'avez pas vraiment d'écrire un fichier dans ce cas. Vous pouvez utiliser la réécriture d'URL pour en faire un "fichier virtuel", qui exécute votre code PHP pour émettre les données du fichier lorsque vous y accédez. Vous changez le PHP pour retourner les données de fichier générées directement au lieu de les écrire dans un fichier.

EDIT: fichiers virtuels dans Apache:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /vfiles 
    RewriteRule ~vfiles/([a-z]+)\.txt vfile-handler.php?id=$1 [L,QSA] 
</IfModule> 

Cela dit que http://my.server/vfiles/foo.txt transparente obtient redirigée dans le serveur Apache pour exécuter au lieu vfile-handler.php, en lui transmettant "id = foo" que la requête chaîne, que vous traitez comme n'importe quelle autre requête GET avec une chaîne de requête. Votre script PHP définit ensuite le type MIME de manière appropriée (text/plain dans ce cas, puisque nous prétendons être un fichier .txt) et construit la réponse comme si nous construisions une page HTML à la volée.

+0

cela a fonctionné parfaitement! pouvez-vous expliquer plus en détail ce que vous voulez dire en utilisant la réécriture d'URL pour créer un "fichier virtuel"? – acedanger

+0

a répondu dans l'édition ci-dessus –

+0

il signifie que vous utiliseriez quelque chose comme 'window.location.href =" chemin/vers/php/sur/server.php? File = true "' ou quelque chose de similaire et dans votre php vous auriez retourne le fichier si la variable de la requête 'file' est vraie (ou un identifiant, selon ce dont tu as besoin). – Blindy

Questions connexes