Brave publisher PUBLISHER
Développeur web Front-End dans l'Oise - Gary Deshayes

Symfony 5 | Retourner une image via une route d'un controller

Développeur web Front-End dans l'Oise - Gary Deshayes <--Translation

Crée le : mercredi 1 septembre 2021

Mise en place de la route

Tout d'abord il vous faudra un controller avec une route prête à recevoir un nom d'image, et ensuite retourner l'image.

Ensuite il faut installer le package suivante : composer require symfony/mime qui va permettre à Symfony de détecter automatiquement le mime type à renvoyer.

Il faut également importer ces packages en haut du controller

use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\JsonResponse;

Mon arborescence de fichier 

folders symfony 5

Mon image se trouve dans le dossier uploads

Une fois le Controller et la route prête voici le code à saisir pour permettre de retourner une image sous Symfony 5 :


    /**
     * @Route("/img-route/{img}", name="img_route")
     * Une route avec un paramètre
     */
    public function index($img): Response
    {
        //Récupération du dossier racine grace au kernel et ensuite ajout de l'emplacement du 
        //fichier
        $filename = $this->getParameter('kernel.project_dir') . '/uploads/' . $img;
        //Si le fichier existe alors on le renvoi, sinon retour 404
        if (file_exists($filename)) {
            //retour d'un new BinaryFileResponse avec le nom du fichier
            return new BinaryFileResponse($filename);
        } else {
            return new JsonResponse(null, 404);
        }
    }

Résultat de la route

Résultat retourn image symfony

Voici le résultat en tapant la route dans votre navigateur, il est possible d'appeler cette route avec une api ou bien une balise <img> pour afficher l'image.

Ce tutoriel est maintenant terminé, merci d'avoir lu et n'hésitez pas à partager :)

Articles récents :

Symfony 5 | Retourner une image via une route d'un controller

Symfony

Crée le : mercredi 1 septembre 2021

VueJS 3, ExpressJS 4.17 | Upload et redimensionnement d'une image

Javascript Framework JS

Crée le : samedi 28 novembre 2020

Symfony Event Subscriber | Restriction d'une plage ip avec un Event Subscriber

Symfony

Crée le : samedi 14 novembre 2020

Angular, ExpressJS | Authentification JWT avec Angular 10 et ExpressJS 4 (MySQL)

Javascript SQL Framework JS

Crée le : dimanche 20 septembre 2020

Symfony, Excel, CSV | Générer un fichier CSV pour Excel avec Symfony

Symfony

Crée le : jeudi 6 août 2020

Symfony FormType ChoiceType | Radio button valeur par défaut dans un FormType

Symfony

Crée le : dimanche 26 juillet 2020

Doctrine, Symfony | Différence entre deux dates sous MySQL (Jour, mois, années...)

Symfony SQL

Crée le : jeudi 18 juin 2020

JavaScript, jQuery et Regex | Sécuriser un mot de passe en temps réel avec JS

Javascript jQuery

Crée le : lundi 23 mars 2020

Symfony, Doctrine | Récupérer les anciennes données d'un formulaire FormType

Symfony

Crée le : vendredi 14 février 2020

jQuery, Webpack et Symfony | Appeler jQuery dans vos fichiers twig

Symfony Bugs

Crée le : dimanche 26 janvier 2020