Bonjour,
Je souhaite tout simplement faire en sorte que l'utilisateur de mon site puisse télécharger une image, sans passer celle-ci dans un href.
La première technique que j'ai mise en place est la suivante :
- Au lieu de passer directement le chemin de l'image dans mon href, j'appelle un fichier php.
- Dans ce fichier php, je force alors le fichier à se télécharger
Avec ce bout de code, tout fonctionne très bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php header('Content-Type: image/jpg'); header('Content-Disposition: attachment; filename="344.jpg"'); readfile($_SERVER["DOCUMENT_ROOT"] . "/3M/photos/344.jpg"); ?>
La technique que je veux maintenant mettre en place est la même, mais je souhaite simplement mettre ce bout de code dans une méthode de ma classe.
Mais, comment écrire mon code dans cette métohde pour que le téléchargement puisse se faire correctement ?
J'aimerais avoir quelque chose comme cela.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php class FilesController extends Controller { public function download() { header('Content-Type: image/jpg'); header('Content-Disposition: attachment; filename="344.jpg"'); readfile($_SERVER["DOCUMENT_ROOT"] . "/photos/344.jpg"); } } ?>
Je sais qu'il y a une histoire comme quoi il ne faut rien d'autre du tout dans le flux d'affichage avant les fonctions header().
Mais du coup je ne sais pas comment "libérer" ce flux. J'ai essayé avec des ob_start(), ob_end_clean(), ..., mais n'étant pas encore trop à l'aise avec tout ça, je ne parviens pas à mettre en place quelque chose de fonctionel.
Merci beaucoup d'avance
Nicolas
Partager