Download files in laravel using Response::download
laravel, laravel-4, laravel-routing, php
Solution
Try this.
public function getDownload()
{
//PDF file is stored under project/public/download/info.pdf
$file= public_path(). "/download/info.pdf";
$headers = array(
'Content-Type: application/pdf',
);
return Response::download($file, 'filename.pdf', $headers);
}
`"./download/info.pdf"`will not work as you have to give full physical path.
Update 20/05/2016
Laravel 5, 5.1, 5.2 or 5.* users can use the following method instead of `Response` facade. However, my previous answer will work for both Laravel 4 or 5. (the `$header` array structure change to associative array `=>`- the colon after 'Content-Type' was deleted - if we don't do those changes then headers will be added in wrong way: the name of header wil be number started from 0,1,...)
$headers = [
'Content-Type' => 'application/pdf',
];
return response()->download($file, 'filename.pdf', $headers);
Problem
In the Laravel application, I'm trying to achieve a button inside the view that can allow users to download files without navigating to any other view or route Now I have two issues: (1) below function throwing ``` The file "/public/download/info.pdf" does not exist ``` (2) The Download button should not navigate the user anywhere and rather just download files on the same view, My current settings, route a view to '/download' Here is what I am trying to achieve: Button: ``` <a href="/download" class="btn btn-large pull-right"><i class="icon-download-alt"> </i> Download Brochure </a> ``` Route : ``` Route::get('/download', 'HomeController@getDownload'); ``` Controller : ``` public function getDownload(){ //PDF file is stored under project/public/download/info.pdf $file="./download/info.pdf"; return Response::download($file); } ```