Salut à tous, voila j'ai une section téléchargements sur un site

le problème c'est que je n'arrive pas a forcer le download, les fichiers (images le plus souvent) s'affichent dans le navigateur.

la méthode du controller:

public function downloadAction($filename)
    {
        $path = $_SERVER'DOCUMENT_ROOT'] . $this->get('request')->getBasePath() . "/images/design/" . $filename;;

        $content = file_get_contents($path);
        if (!file_exists($path)) {
            throw $this->createNotFoundException();
        }
        $response = new BinaryFileResponse($path);
        $response->headers->set('Content-Type', $content->getContentType());
        $response->headers->set('Content-Disposition', "attachment; filename=$filename");
        $response->sendHeaders();
        return $response;
    }

et dans ma vue

<a href="{{ path('download', {filename: 'monImage.png'})}}">Télécharger</a>

j'ai cherche depuis ce matin et impossible de télécharger l'image (sauf en faisant un clic droit -> enregistrer la cible du lien)

des idées? =)

merci d'avance

2 réponses


Vallyan
Réponse acceptée

Peut-etre ceci:

$response->headers->set('Content-Type', 'application/force-download');

a la place de getContentType(). C'est un hack mais souvent ca marche.

Benares
Auteur

super merci ça fonctionne niquel ^^