Laravel如何仅为身份验证用户制作下载链接?

时间:2017-06-04 02:55:32

标签: php laravel laravel-5

我在公共目录文件文件夹中有一些文件。我想向用户发送特定文件的链接。现在我按照以下方式提供链接。

<a href="{{asset('files/'.$row->file_path)}}">
    <button class="btn btn-success">Download</button>
</a>

实际上用户知道我的目录在哪里。我可以通过以下方式制作下载链接,其中只有身份验证用户可以下载文件,或者我可以从URL隐藏目录吗?

1 个答案:

答案 0 :(得分:2)

首先,将所有文件从可公开访问的目录移至私有,例如,移至storage_path('private/')文件夹。

其次,创建一个方法,以任何方式从URL接收文件名(从查询解码,或通过id从数据库加载),进行授权/其他一些事情检查,如果它全部好吧,把它交给客户下载。 这可以按如下方式完成:return response()->download($pathToFile);

然后,不要使用asset()直接链接到文件,而是为用户提供指向执行创建方法的路由的链接。