Retour sur l'Image de Contrôleur de symfony2
Je voudrais savoir comment puis-je retourner une image à partir de la manette sans aucun modèle.
Je voudrais l'utiliser pour le pixel de suivi dans un bulletin d'information.
Je commence avec ce code
$image = "1px.png";
$file = readfile("/path/to/my/image/1px.png");
$headers = array(
'Content-Type' => 'image/png',
'Content-Disposition' => 'inline; filename="'.$file.'"');
return new Response($image, 200, $headers);
Mais sur le navigateur, j'ai un lien brisé (fichier non trouvé...)
Vu le message, mais cela pourrait l'aider. Téléchargement d'un fichier avec symfony
OriginalL'auteur Arnaud B | 2013-07-01
Vous devez vous connecter pour publier un commentaire.
Maintenant vous retourner le nom de fichier comme le corps de la réponse et écrire le fichier de contenu pour le nom de fichier de Contenu-Disposition.
devrait être:
... et ...
devrait être ...
droit?
Plus de prendre un coup d'oeil à cette question.
OriginalL'auteur nifr
Selon l'Symfony-Docs quand servir des fichiers vous pouvez utiliser un BinaryFileResponse:
Ce BinaryFileResponse gère automatiquement quelques-têtes de requête HTTP et vous évite d'utiliser
readfile()
ou d'autres fonctions de fichier.OriginalL'auteur franbenz
Cela fonctionne très bien pour moi.
OriginalL'auteur Francesco
Aussi, j'ai dû changer:
:
Semblait readfile faisait écho contenu comme il le lire en forçant les en-têtes de sortie précoce et la négation de la forcé-tête Content-Type.
OriginalL'auteur user2888854
file_get_contents est une mauvaise idée. La lecture d'une grande liste d'images via file_get_contents tué mon petit serveur. J'ai dû trouver une autre solution et cela fonctionne maintenant parfait et très rapide pour moi.
La clé est d'utiliser readfile($sFileName) au lieu de file_get_contents. Le Symfony Flux Réponse est en mesure de prendre une fonction de rappel qui sera exécutée lors de l'envoi ($oResponse->send()). C'est donc le bon endroit pour utiliser readfile().
Comme un peu d'intérêt, j'ai écrit une méthode de mise en cache.
OriginalL'auteur Phil
Rapide réponse
OriginalL'auteur Nolwennig