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

时间:2018-03-15 11:02:33

标签: php laravel

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

4 个答案:

答案 0 :(得分:14)

公用文件夹意味着文件可以公开访问。例如,任何人都可以通过转到

查看存储在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

设置文件系统配置

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

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

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

公开:asset('my-file.jpg')

答案 1 :(得分:6)

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

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

答案 2 :(得分:2)

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

访问它

cachelogsstorage/app/public的文件夹。

我的文件放在哪里?

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

修改

正如其他答案指出<button id="button_reload" onclick=reload()><span class="glyphicon glyphicon-refresh"></span></button> webroot目录,任何用户都可以看到它。即使是非登录用户

答案 3 :(得分:1)

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

  

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

     

storage是缓存,日志等文件夹。