Herunterladen von Dateien in Laravel mit Response::download
In Laravel ermöglicht die Response::download-Methode Benutzern das Herunterladen von Dateien vom Server . Hier ist eine Lösung für die Probleme, die bei der Implementierung dieser Funktionalität auftreten:
1. Problem mit dem Dateipfad:
Der Fehler „Die Datei...nicht vorhanden“ weist auf einen falschen Dateipfad hin. Um dieses Problem zu beheben, verwenden Sie den Helfer public_path(), um den vollständigen physischen Pfad zur Datei anzugeben:
$file= public_path(). "/download/info.pdf";
2. Verhindern der Seitennavigation:
Um das Navigieren zu einer anderen Ansicht oder Route zu vermeiden, verwenden Sie eine Ajax-Anfrage, um den Dateidownload abzuwickeln. So geht's:
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!'); } }); }); });
Controller:
public function getDownload() { // Same code as before, but now it returns a JSON response return response()->json([ 'success' => true, 'message' => 'File downloaded successfully!' ]); }
Update für Laravel v5.0:
Wie in der Lösung erwähnt, können Sie stattdessen die Methode „response()“ in Laravel v5.0 verwenden der Response-Fassade. Auch die Header-Struktur ist etwas anders, wie unten gezeigt:
$headers = [ 'Content-Type' => 'application/pdf', ]; return response()->download($file, 'filename.pdf', $headers);
Das obige ist der detaillierte Inhalt vonWie lade ich Dateien in Laravel mit Response::download herunter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!