Comment lancer des téléchargements forcés de fichiers dans Symfony2 ?

Mary-Kate Olsen
Libérer: 2024-10-23 13:16:02
original
591 Les gens l'ont consulté

How to Initiate Forced File Downloads in Symfony2?

Forcer les téléchargements de fichiers dans Symfony2

Lors de la gestion des événements de clic de l'utilisateur sur les liens de téléchargement, l'objectif est d'inviter l'utilisateur à enregistrer un fichier. Cependant, dans Symfony2, les tentatives de lancement de téléchargements de fichiers conduisent souvent à des résultats indésirables.

Une approche consiste à spécifier manuellement les en-têtes de la réponse :

<code class="php">    $response = new Response();
    $response->headers->set('Content-type', 'application/octect-stream');
    $response->headers->set('Content-Disposition', sprintf('attachment; filename="%s"', $filename));
    $response->headers->set('Content-Length', filesize($filename));</code>
Copier après la connexion

Cependant, cette approche peut entraîner le téléchargement boîte de dialogue affichant une taille de fichier de 0 octet.

L'inclusion de l'en-tête Content-Transfer-Encoding peut résoudre ce problème :

<code class="php">        $response->headers->set('Content-Transfer-Encoding', 'binary');
        $response->setContent(readfile($filename));</code>
Copier après la connexion

Cependant, cela génère parfois un flux de caractères illisibles.

Une méthode alternative consiste à utiliser la fonction setContent avec la fonction file_get_contents() :

<code class="php">    $response->setContent(file_get_contents($filename));</code>
Copier après la connexion

Cette approche peut conduire à une erreur PHP liée à la limite de mémoire.

Pour Pour éviter ces problèmes, envisagez d'utiliser la classe BinaryFileResponse :

<code class="php">use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;

$response = new BinaryFileResponse($file);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT);</code>
Copier après la connexion

Cette solution est simple et sans effort, facilitant le comportement de téléchargement de fichiers souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal