在Laravel 5.4中在公共目录和存储中存储文件之间的区别

Кам*_*мур 13 php laravel

将文件(图像)public/images存储在文件夹中并将其存储在有storage/app/public什么区别?

H H*_*H H 17

公用文件夹意味着文件可以公开访问.例如public/images/my-image.jpeg,任何人都可以通过访问来查看存储的图像

mysite.com/images/my-image.jpeg

但是,存储在storage目录中的文件仅适用于您的应用程序.

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

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

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

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

有2种辅助方法public和storage显示文件:

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

上市: asset('my-file.jpg')


Add*_*Ltd 9

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

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


Cha*_*lie 5

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

在storage/app/public针对文件夹cache,logs。

我的文件放在哪里?

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

编辑

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