Téléchargement de fichiers dans Laravel à l'aide de Response::download
Dans Laravel, la méthode Response::download permet aux utilisateurs de télécharger des fichiers depuis le serveur . Voici une solution aux problèmes rencontrés lors de la mise en œuvre de cette fonctionnalité :
1. Problème de chemin de fichier :
L'erreur « Le fichier...n'existe pas » indique un chemin de fichier incorrect. Pour résoudre ce problème, utilisez l'assistant public_path() pour spécifier le chemin physique complet du fichier :
$file= public_path(). "/download/info.pdf";
2. Empêcher la navigation dans les pages :
Pour éviter de naviguer vers une autre vue ou un autre itinéraire, utilisez une requête Ajax pour gérer le téléchargement du fichier. Voici comment :
ViewController :
<button class="btn btn-large pull-right" data-href="/download" id="downloadBtn"> <i class="icon-download-alt"></i> Download Brochure </button>
JavaScript :
$(document).ready(function() { $('#downloadBtn').click(function() { $.ajax({ url: $(this).data('href'), success: function() { alert('File downloaded successfully!'); }, error: function() { alert('Error downloading file!'); } }); }); });
Contrôleur :
public function getDownload() { // Same code as before, but now it returns a JSON response return response()->json([ 'success' => true, 'message' => 'File downloaded successfully!' ]); }
Mise à jour pour Laravel v5.0 :
Comme indiqué dans la solution, vous pouvez utiliser la méthode Response() dans Laravel v5.0 à la place de la façade Réponse. La structure de l'en-tête est également légèrement différente, comme indiqué ci-dessous :
$headers = [ 'Content-Type' => 'application/pdf', ]; return response()->download($file, 'filename.pdf', $headers);
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!