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

Signaler
Messages postés
12
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
16 septembre 2017
-
jordane45
Messages postés
27629
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 février 2020
-
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,


--

4 réponses

Messages postés
14652
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 février 2020
139
Ta page est bien nommée *.php ?
Messages postés
12
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
16 septembre 2017

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);
?>
Messages postés
27629
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 février 2020
323
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
Messages postés
12
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
16 septembre 2017

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
Messages postés
27629
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 février 2020
323 > jules87
Messages postés
12
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
16 septembre 2017

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);
?>
Messages postés
12
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
16 septembre 2017

ça télécharge img.php et cette fois le php est vide

--
jordane45
Messages postés
27629
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 février 2020
323
Arff..
J'ai oublié une dernière ligne (j'ai édité mon code précédent)
echo file_get_contents($file);