Forcer téléchargement d'un fichier
Résolu
Étienne9
Messages postés
1022
Date d'inscription
Statut
Membre
Dernière intervention
-
Étienne9 Messages postés 1022 Date d'inscription Statut Membre Dernière intervention -
Étienne9 Messages postés 1022 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite forcer le téléchargement d'un fichier sur mon site.
J'ai ma page de téléchargement qui est dans le dossier "pages" et quand on fait précédent et quand on va dans le dossier "documents" bah là il y a tout les documents à télécharger.
Dans le dossier documents j'ai aussi mis telechargement.php qui contient :
<?
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=$pdf");
readfile($pdf);
?>
Et dans mes liens je fais :
<a href="../documents/telechargement.php?pdf=../documents/LeNigaudFarceur.pdf">La pièce</a>
<br>
Je ne comprends pas pourquoi ça ne marche pas.
Merci beaucoup pour l'aide. Je n'ai jamais fait de PHP, je m'aide du net.
Je souhaite forcer le téléchargement d'un fichier sur mon site.
J'ai ma page de téléchargement qui est dans le dossier "pages" et quand on fait précédent et quand on va dans le dossier "documents" bah là il y a tout les documents à télécharger.
Dans le dossier documents j'ai aussi mis telechargement.php qui contient :
<?
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=$pdf");
readfile($pdf);
?>
Et dans mes liens je fais :
<a href="../documents/telechargement.php?pdf=../documents/LeNigaudFarceur.pdf">La pièce</a>
<br>
Je ne comprends pas pourquoi ça ne marche pas.
Merci beaucoup pour l'aide. Je n'ai jamais fait de PHP, je m'aide du net.
A voir également:
- Forcer téléchargement d'un fichier
- Forcer la suppression d'un fichier - Guide
- Forcer demarrage pc - Guide
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
24 réponses
Bonjour
Si tu as une vieille config de PHP, ça devrait marcher comme ça.
Si tu as une version 5, tu devrais utiliser <?php au lieu de <? comme balise ouvrante de php, et filename=$_GET['pdf'] au lieu de filename=$pdf
As-tu essayé de taper directement http://tonsite/documents/LeNigaudFarceur.pdf pour voir ce qui se passe ?
Si tu as une vieille config de PHP, ça devrait marcher comme ça.
Si tu as une version 5, tu devrais utiliser <?php au lieu de <? comme balise ouvrante de php, et filename=$_GET['pdf'] au lieu de filename=$pdf
As-tu essayé de taper directement http://tonsite/documents/LeNigaudFarceur.pdf pour voir ce qui se passe ?
En fait, je travaille sur des Frameset alors quand je ne mets pas la page telechargement.php et bah ce qu'il se passe c'est que le PDF s'ouvre carrément sur la page.
Alors si je comprends bien, c'est ça le code maintenant dans la page de téléchargement PHP ? :
<?php
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename='$_GET[pdf]'");
readfile($pdf);
?>
Alors si je comprends bien, c'est ça le code maintenant dans la page de téléchargement PHP ? :
<?php
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename='$_GET[pdf]'");
readfile($pdf);
?>
readfile($pdf); doit aussi être changé en readfile($_GET['pdf']);
Toujours sous réserve que ta version de PHP ne soit pas trop ancienne.
Si dans ta version , tu as register_globals à off, alors ça aurait déjà dû marcher. Si register_globals est on, alors il faut faire comme je te l'ai indiqué.
Un peu d'information sur le sujet dans la doc PHP :
https://www.php.net/manual/fr/security.globals.php
Toujours sous réserve que ta version de PHP ne soit pas trop ancienne.
Si dans ta version , tu as register_globals à off, alors ça aurait déjà dû marcher. Si register_globals est on, alors il faut faire comme je te l'ai indiqué.
Un peu d'information sur le sujet dans la doc PHP :
https://www.php.net/manual/fr/security.globals.php
<?php
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename='$_GET[pdf]'");
readfile($_GET['pdf']);
?>
Ça ne fonctionne toujours pas !
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename='$_GET[pdf]'");
readfile($_GET['pdf']);
?>
Ça ne fonctionne toujours pas !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
On peu peut être voir le probléme sous un angle différent.
Dans ton dossier document je présume que tu a une liste des documents à télécharger et quand tu clique sur l'un d'entre un tu voudrais faire appel a la page téléchargement avec en paramètre le lien vers le fichier à télécharger c'est sa ?
Dans ton dossier document je présume que tu a une liste des documents à télécharger et quand tu clique sur l'un d'entre un tu voudrais faire appel a la page téléchargement avec en paramètre le lien vers le fichier à télécharger c'est sa ?
Je viens d'essayer :
<?php header("Content-type: application/pdf"); header("Content-Disposition: attachment; filename='$_GET[pdf]'"); readfile($_GET['pdf']); ?>chez moi et ça marche très bien.
Et le lien c'est bien ça à faire ?
<a href="../documents/telechargement.php?pdf=../documents/LeNigaudFarceur.pdf">La pièce</a>
Avec ../documents/telechargement.php l'adresse de la page PHP et ../documents/LeNigaudFarceur.pdf l'adresse de mon pdf.
C'est cela ? Car chez moi ça ne marche pas il veut que je télécharge le telechargement.php
Comment savoir ma version PHP ?
Comment savoir comment est register_globals ? Et c'est quoi ça ?
<a href="../documents/telechargement.php?pdf=../documents/LeNigaudFarceur.pdf">La pièce</a>
Avec ../documents/telechargement.php l'adresse de la page PHP et ../documents/LeNigaudFarceur.pdf l'adresse de mon pdf.
C'est cela ? Car chez moi ça ne marche pas il veut que je télécharge le telechargement.php
Comment savoir ma version PHP ?
Comment savoir comment est register_globals ? Et c'est quoi ça ?
Puisque LeNigaudFarceur.pdf et telechargement.pdf sont dans le même dossier, tu n'as pas besoin d'indiquer de dossier pour LeNigaudFarceur.pdf :
<a href="../documents/telechargement.php?pdf=LeNigaudFarceur.pdf">La pièce</a> (mais ça ne devrait pas changer grand chose)
Es-tu sûr d'ailleurs que ton chemin ../documents est bien le bon par rapport à la page qui contient ce lien ?
Pour en être sûr de chez sûr, remplace provisoirement le code de ton script telechargement.php par un simple 'coucou'.
Qu'est-ce qui se passe quand tu cliques sur ton lien ? Dans la version avec 'coucou', et dans la version avec le script de téléchargement ?
<a href="../documents/telechargement.php?pdf=LeNigaudFarceur.pdf">La pièce</a> (mais ça ne devrait pas changer grand chose)
Es-tu sûr d'ailleurs que ton chemin ../documents est bien le bon par rapport à la page qui contient ce lien ?
Pour en être sûr de chez sûr, remplace provisoirement le code de ton script telechargement.php par un simple 'coucou'.
Qu'est-ce qui se passe quand tu cliques sur ton lien ? Dans la version avec 'coucou', et dans la version avec le script de téléchargement ?
Il y a un malaise là...
Qu'est-ce que ça veut dire "il me fait télécharger la page telechargement.php" ?
Normalement, cliquer sur le lien provoque l'exécution du script telechargement.php. Dans la version 'coucou', ça devrait afficher 'coucou' et dans la version avec le script de téléchargement, çà devrait te proposer d'enregistrer ton fichier pdf.
Qu'est-ce que ça veut dire "il me fait télécharger la page telechargement.php" ?
Normalement, cliquer sur le lien provoque l'exécution du script telechargement.php. Dans la version 'coucou', ça devrait afficher 'coucou' et dans la version avec le script de téléchargement, çà devrait te proposer d'enregistrer ton fichier pdf.
Qu'est-ce que ça veut dire "il me fait télécharger la page telechargement.php" ?
Capture écran : http://hpics.li/0fd7858
Et voilà qui devrait vous aider à m'aider : http://hpics.li/1c4882b
Capture écran : http://hpics.li/0fd7858
Et voilà qui devrait vous aider à m'aider : http://hpics.li/1c4882b
Effectivement, tu l'avais pourtant bien dit, c'est moi qui n'avais pas imaginé que c'était possible.
Ben voilà, tout s'explique...
En fait, tu ne passes pas par un serveur Web. Ta page pieces.html n'est pas traitée comme une page web (http://) , mais comme un simple fichier (file://). Le lien blablabla.php qu'il y a dedans subit le même sort : il est traité comme un fichier, qu'on essaye donc de télécharger parce que ce n'est pas un fichier html. Alors qu'un serveur aurait vu qu'il fallait l'interpréter comme un script php.
As-tu installé quelque chose (easyphp, wamp...) comme serveur sur ta machine ?
Ben voilà, tout s'explique...
En fait, tu ne passes pas par un serveur Web. Ta page pieces.html n'est pas traitée comme une page web (http://) , mais comme un simple fichier (file://). Le lien blablabla.php qu'il y a dedans subit le même sort : il est traité comme un fichier, qu'on essaye donc de télécharger parce que ce n'est pas un fichier html. Alors qu'un serveur aurait vu qu'il fallait l'interpréter comme un script php.
As-tu installé quelque chose (easyphp, wamp...) comme serveur sur ta machine ?
Bonjour,
J'ai même tenté de l'héberger (quand même) mais rien à faire.
Je ne PENSE pas avoir installé un truc style serveur sur mon ordinateur.
Tous les Internautes qui vont sur mon site ont le même problème que moi, je ne suis pas le seul...
J'ai même tenté de l'héberger (quand même) mais rien à faire.
Je ne PENSE pas avoir installé un truc style serveur sur mon ordinateur.
Tous les Internautes qui vont sur mon site ont le même problème que moi, je ne suis pas le seul...
Tu as raison, c'est un autre problème. Le comportement est différent quand on ne passe pas par un serveur.
Tu n'as pas installé de serveur sur ton PC, alors peux-tu donner l'adresse de ton site pour que je puisse voir s'il n'y a pas quelque chose d'autre ?
Autre chose que je trouve bizarre : tu n'as pas de serveur, donc tu n'as jamais travaillé en local, pourtant, dans ta capture d'écran montrant la fenêtre de téléchargement, on voit bien que le nom de fichier est un nom local, pas une url. Ce n'est pas cohérent.
Enfin, chaque chose en son temps, si tu pouvais commencer par une donner un lien où je peux constater le phénomène.
Tu n'as pas installé de serveur sur ton PC, alors peux-tu donner l'adresse de ton site pour que je puisse voir s'il n'y a pas quelque chose d'autre ?
Autre chose que je trouve bizarre : tu n'as pas de serveur, donc tu n'as jamais travaillé en local, pourtant, dans ta capture d'écran montrant la fenêtre de téléchargement, on voit bien que le nom de fichier est un nom local, pas une url. Ce n'est pas cohérent.
Enfin, chaque chose en son temps, si tu pouvais commencer par une donner un lien où je peux constater le phénomène.
Je vous ai envoyé le lien par mp, c'est dans pièces de théâtre.
Le nom de la page est très étrange car c'est une page privée, il y a une zone sécurisée et je vous ai donné le lien qui permet d'y accéder sans s'identifier.
Voilà le contenu de pieces.html :
<HTML>
<HEAD>
<TITLE>Lisez-moi</TITLE>
</HEAD>
<br>
<h1 align="center">Mes pièces de théâtre</h1><br><br>
CETTE ZONE EST ENCORE EN CONSTRUCTION. SOYEZ PATIENT ET DÉSOLÉ<br><br>
Nom de la pièce : Le Nigaud Farceur<br>
Année de rédaction : 2009<br>
État actuel : Terminé<br>
Téléchargements :<br><a href="../documents/telechargement.php?pdf=LeNigaudFarceur.pdf">La pièce</a> <a href="../documents/LeNigaudFarceurBonus.mp3">Le Bonus</a>
<br>
<BODY><BODY BACKGROUND="../images/droite.jpg">
</BODY>
</HTML>
J'effacerai ensuite ce code car du coup les gens peuvent télécharger là quand ils veulent...
Le nom de la page est très étrange car c'est une page privée, il y a une zone sécurisée et je vous ai donné le lien qui permet d'y accéder sans s'identifier.
Voilà le contenu de pieces.html :
<HTML>
<HEAD>
<TITLE>Lisez-moi</TITLE>
</HEAD>
<br>
<h1 align="center">Mes pièces de théâtre</h1><br><br>
CETTE ZONE EST ENCORE EN CONSTRUCTION. SOYEZ PATIENT ET DÉSOLÉ<br><br>
Nom de la pièce : Le Nigaud Farceur<br>
Année de rédaction : 2009<br>
État actuel : Terminé<br>
Téléchargements :<br><a href="../documents/telechargement.php?pdf=LeNigaudFarceur.pdf">La pièce</a> <a href="../documents/LeNigaudFarceurBonus.mp3">Le Bonus</a>
<br>
<BODY><BODY BACKGROUND="../images/droite.jpg">
</BODY>
</HTML>
J'effacerai ensuite ce code car du coup les gens peuvent télécharger là quand ils veulent...
Remarques : ta balise <body> devrait être immédiatement après <head> - et tu ne dois pas avoir deux balises body : avec et sans background.
Tu peux corriger ça mais ça m'étonnerait que ça change quoi que ce soit.
Pour essais, peux-tu ramener ton pdf et le script telecharger.php dans le répertoire pages (avec l'ajustement d'url qui va avec). Il y a un truc bizarre, sans doute du côté de ton hébergeur qui refuse d'exécuter des scripts situés dans 'documents' mais je ne suis absolument pas sûr de cette hypothèse.
Je pars jusqu'à demain, bon courage :)
Tu peux corriger ça mais ça m'étonnerait que ça change quoi que ce soit.
Pour essais, peux-tu ramener ton pdf et le script telecharger.php dans le répertoire pages (avec l'ajustement d'url qui va avec). Il y a un truc bizarre, sans doute du côté de ton hébergeur qui refuse d'exécuter des scripts situés dans 'documents' mais je ne suis absolument pas sûr de cette hypothèse.
Je pars jusqu'à demain, bon courage :)
Bonsoir,
Je viens de le faire, ce n'est pas ça. Vous pouvez regarder sur l'adresse que je vous ai envoyé par mp vous verrez...
Je viens de le faire, ce n'est pas ça. Vous pouvez regarder sur l'adresse que je vous ai envoyé par mp vous verrez...
As-tu déjà fait marcher quoi que ce soit en php chez cet hébergeur ? Es-tu sûr qu'il gère php ?
Si tu n'as jamais rien fait en php, fais un petit script (un simple echo) pour voir que ça marche.
Si tu n'as jamais rien fait en php, fais un petit script (un simple echo) pour voir que ça marche.
Bonjour,
Je n'ai jamais fait de PHP.
Je ne sais pas du tout si Voila gère le php en site mode expérimenté.
Apparemment il ne reconnait pas le PHP.
Je n'ai jamais fait de PHP.
Je ne sais pas du tout si Voila gère le php en site mode expérimenté.
Apparemment il ne reconnait pas le PHP.
Je ne sais pas du tout si Voila gère le php en site mode expérimenté.
Et tu n'as pas eu l'idée de vérifier ?
3 minutes de recherche. Je n'ai rien trouvé sur le mode expérimenté, mais sur l'offre confirmé :
https://www.118712.fr/sortir.html#5
Et tu n'as pas eu l'idée de vérifier ?
3 minutes de recherche. Je n'ai rien trouvé sur le mode expérimenté, mais sur l'offre confirmé :
https://www.118712.fr/sortir.html#5
(attention, pour mettre $_GET['pdf'] dans une chaîne entre ", il ne faut pas mettre de ' autour de pdf)
S'il y a une erreur dans ma syntaxe, explique-moi où.
S'il n'y en a pas, à quoi bon ton intervention ?
Moi je peux expliquer où il y en a une dans ta syntaxe "pour être sûr"
Tu as oublié les ' autour de pdf dans $_GET['pdf'] - qui n'est pas entre " dans ta manière d'écrire.
J'ai pas dit qu'il y avais une erreur c'est une autre façon de l'écrire.
Pas besoin de s'énerver !