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

jules87
Messages postés
12
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
16 septembre 2017
- 16 sept. 2017 à 19:00
jordane45
Messages postés
35404
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
- 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,


--

4 réponses

NHenry
Messages postés
14925
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
162
16 sept. 2017 à 19:08
Ta page est bien nommée *.php ?
0
jules87
Messages postés
12
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
16 septembre 2017

16 sept. 2017 à 19:17
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);
?>
0
jordane45
Messages postés
35404
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
356
16 sept. 2017 à 19:53
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".

0
jules87
Messages postés
12
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
16 septembre 2017

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
0
jordane45
Messages postés
35404
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
356 > jules87
Messages postés
12
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
16 septembre 2017

Modifié le 16 sept. 2017 à 22:29
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);
?>
0
jules87
Messages postés
12
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
16 septembre 2017

16 sept. 2017 à 20:30
ça télécharge img.php et cette fois le php est vide

--
0
jordane45
Messages postés
35404
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
356
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);
0