【问题标题】:Difference between storing files in public directory and in storage in Laravel 5.4在 Laravel 5.4 中将文件存储在公共目录和存储中的区别
【发布时间】:2018-08-24 03:57:51
【问题描述】:

将文件(图像)存储在public/images 文件夹和将它们存储在storage/app/public 有什么区别?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    公共文件夹意味着文件可以公开访问。例如,存储在public/images/my-image.jpeg 中的图像可以被任何人查看

    mysite.com/images/my-image.jpeg

    但是,存储在storage 目录中的文件仅对您的应用可用。

    Laravel 有一个 php artisan storage:link 命令,可以将符号链接从 storage/app/public 添加到 public

    原因是您的 storage 可能不是您的本地文件系统,而是 Amazon S3 存储桶或 Rackspace CDN(或其他任何东西)

    您需要按照文档https://laravel.com/docs/5.6/filesystem 设置文件系统配置

    完成此操作后,您可以从存储位置获取/存储文件,而不是将所有内容都放在服务器上。

    publicstorage 有两种辅助方法来显示文件:

    存储:storage_path('my-file.jpg')

    公众号:asset('my-file.jpg')

    【讨论】:

      【解决方案2】:

      如果您想控制谁可以访问哪些文件,请将文件放入存储中。

      如果每个人都可以访问该文件(包括未登录的用户),则公开

      【讨论】:

        【解决方案3】:

        public/images 是一个 webroot 目录。这意味着可以通过网络浏览器访问它mozilla, chrome, etc...

        storage/app/publiccachelogs 的文件夹。

        我的文件放在哪里?

        经验法则:如果您需要控制谁可以查看这些文件,请将它们放在 storage/app/public 中,否则将它们放在 public/images

        编辑

        正如其他答案指出的 public webroot 目录,任何用户都可以看到它。即使是未登录的用户

        【讨论】:

          【解决方案4】:

          here 提出了一个类似的问题,并回答说:

          public 是一个“WEBR​​OOT”目录。它由文件组成,可以是 从浏览器访问。有你的index.php 文件,它需要一个 您的输入点的角色。还有你的cssjavascript 文件。

          storage 是缓存、日志等的文件夹。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-09-08
            • 2015-10-17
            • 2016-06-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-03
            相关资源
            最近更新 更多