Forcer le téléchargement d'une image générée en php

jules87 12 Messages postés mardi 14 mai 2013Date d'inscription 16 septembre 2017 Dernière intervention - 16 sept. 2017 à 19:00 - Dernière réponse : jordane45 20570 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention
- 16 sept. 2017 à 22:30
Bonjour,

J'ai crée une page php qui génère une image png, tout fonctionne et l'extension de l'image est .php.
Je souhaiterais à partir d'une autre page forcer le téléchargement de l'image, j'ai testé plusieurs solutions mais c'est le code php qui se télécharge et non l'image.
Si quelqu’un à une solution, en vous remerciant,
cordialement,


--
Afficher la suite 

7 réponses

Répondre au sujet
NHenry 14132 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention - 16 sept. 2017 à 19:08
0
Utile
Ta page est bien nommée *.php ?
Commenter la réponse de NHenry
jules87 12 Messages postés mardi 14 mai 2013Date d'inscription 16 septembre 2017 Dernière intervention - 16 sept. 2017 à 19:17
0
Utile
oui et pour forcer le téléchargement, j'ai essayé ce script :

<?php
$file = 'http://www.liens-vers-mon-image.php';

header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename='.basename($file));
readfile($file);
?>
Commenter la réponse de jules87
jordane45 20570 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention - 16 sept. 2017 à 19:53
0
Utile
2
Bonjour,

Essaye ça :
$quoted = sprintf('"%s"', addcslashes(basename($file), '"\\'));
$size   = filesize($file);

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $quoted); 
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size);


Par contre.... je pense que tu dois mettre le chemin absolu de ton image sur ton serveur et non son "url".

jules87 12 Messages postés mardi 14 mai 2013Date d'inscription 16 septembre 2017 Dernière intervention - 16 sept. 2017 à 20:03
j'ai essayé avec

<?php
$file = '/home/xxxx/www/xxx/img.php';

$quoted = sprintf('"%s"', addcslashes(basename($file), '"\\'));
$size = filesize($file);

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $quoted);
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size);
?>


ça marche pas, page blanche
jordane45 20570 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention > jules87 12 Messages postés mardi 14 mai 2013Date d'inscription 16 septembre 2017 Dernière intervention - 16 sept. 2017 à 20:12
Je viens de tester chez moi... ça fonctionne parfaitement.

Quelle est l'url que tu as dans ton navigateur lorsque tu vas sur cette page ?
Es-tu sûr que le fichier existe bien à cet endroit et porte exactement ce nom ?

Au cas où.. peux tu essayer ceci :
<?php
error_reporting(E_ALL);
ini_set('display-errors','on');

$file = '8pool.php';

if(!file_exists($file)){
 die('fichier introuvable !');
} 

if(!is_readable($file)){
 die ('Impossible de lire le fichier');
}
 
 
$quoted = sprintf('"%s"', addcslashes(basename($file), '"\\'));
$size   = filesize($file);

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $quoted); 
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size);

//petit oubli de la dernière ligne :
echo file_get_contents($file);
?>
Commenter la réponse de jordane45
jules87 12 Messages postés mardi 14 mai 2013Date d'inscription 16 septembre 2017 Dernière intervention - 16 sept. 2017 à 20:30
0
Utile
1
ça télécharge img.php et cette fois le php est vide

--
jordane45 20570 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention - 16 sept. 2017 à 22:30
Arff..
J'ai oublié une dernière ligne (j'ai édité mon code précédent)
echo file_get_contents($file);
Commenter la réponse de jules87

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.