【问题标题】:Laravel storage accessibility confusionLaravel 存储可访问性混乱
【发布时间】:2020-04-27 17:57:23
【问题描述】:

我无法弄清楚 Laravel 的存储是如何工作的,因为有两个公用文件夹,当我阅读有关它的帖子时,我很困惑人们在谈论哪些人。

举个例子,我有一个应用程序,我想在其中存储仅用于登录用户的图像。我知道公用文件夹允许每个人也可以看到图像,我不希望这样。有两个名为 public 的文件夹,它们是:

我很确定 public 仅用于 css/js/index.php 等,而 storage/app/public 是存储文件可公开访问的文件夹。但是,我不是 100% 确定的。

如果我想为登录用户提供私人图像,在 storage/app/ 文件夹中创建 clients 文件夹是否正确?

感谢您的帮助。

【问题讨论】:

    标签: laravel


    【解决方案1】:

    长话短说,Laravel 的目标是让两者保持一致。并且在文档中有详细解释:https://laravel.com/docs/7.x/filesystem#the-public-disk

    即使存储文件夹确实受到保护,当您运行命令php artisan storage:link 时,您将在public/storagestorage/app/public 之间创建一个符号链接。

    storage/app/public 中可用的所有项目随后将在 public/storage 中可用,并可从外部访问。

    如果您想阻止公共访问,那么您需要使用local 驱动程序 (https://laravel.com/docs/7.x/filesystem#the-local-driver),它将安全地存储在您的应用程序中。例如:

    Storage::disk('local')->put('FOLDERNAME/file.txt', 'Contents');
    

    无法从外部访问。

    【讨论】:

    • 如果我理解的很好,如果我使用链接,红线链接的两个文件是相同的。所以要向连接的用户隐藏文件,我必须使用 storage/app/FOLDERNAME ?
    • 非常感谢,你知道“storeAs”是否也能达到同样的效果吗?
    • storeAs() 是一种类似于put() 的方法,它位于disk 架构之上
    猜你喜欢
    • 2019-02-17
    • 2017-10-13
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    相关资源
    最近更新 更多