我在公共目录文件文件夹中有一些文件。我想向用户发送特定文件的链接。现在我按照以下方式提供链接。
<a href="{{asset('files/'.$row->file_path)}}">
<button class="btn btn-success">Download</button>
</a>
实际上用户知道我的目录在哪里。我可以通过以下方式制作下载链接,其中只有身份验证用户可以下载文件,或者我可以从URL隐藏目录吗?
答案 0 :(得分:2)
首先,将所有文件从可公开访问的目录移至私有,例如,移至storage_path('private/')
文件夹。
其次,创建一个方法,以任何方式从URL接收文件名(从查询解码,或通过id从数据库加载),进行授权/其他一些事情检查,如果它全部好吧,把它交给客户下载。
这可以按如下方式完成:return response()->download($pathToFile);
然后,不要使用asset()
直接链接到文件,而是为用户提供指向执行创建方法的路由的链接。