使用数据库中的文件创建下载链接并将其放在按钮上

时间:2019-01-08 15:36:07

标签: laravel laravel-5 laravel-5.6

我正在尝试使下载按钮从数据库中获取一个文件并下载。到目前为止,这就是我所拥有的,将不胜感激。

我的DownloadsController.php

class DownloadsController extends Controller
{
  public function download($file_name) {
    $file = DB::table('media')->where('status',1)->get();
    $file_path = public_path('files/'.$file);
    return response()->download($file_path);
  }
}

我的路线

Route::get('/files/{file}', 'DownloadsController@download');

按钮

{!! Html::link('files/{file}', 'Download Media') !!}

我在链接上看到的是http://example/files/{file}。如何将文件放在下载链接上?

1 个答案:

答案 0 :(得分:0)

您通常会在routes / web.php中定义您的路线,例如

https://laravel.com/docs/5.7/routing#named-routes

Route::get('file/{file}', 'Controller@method')->name('file-download');

这意味着您需要在按钮上找到文件名的正确链接,例如

{!! Html::link('files/filename.jpg', 'Download Media') !!}

请记住,该名称必须是有效的文件名。或者,您可以使用路由帮助程序,方法是在上面插入路由名称,然后插入路由参数,例如route('file-download','filename.jpg')。

使用路由助手时,最终按钮链接将如下所示;

{!! Html::link(route('file-download', 'filename.jpg'), 'Download Media') !!}