干预中使用的静态图像的正确位置

时间:2018-11-25 14:01:56

标签: php laravel intervention

假设我有一个Job,它通过Intervention生成了一个头像图像,用户名位于静态默认背景图像的顶部。每个项目成员都可以使用此背景图像,因此它应该位于存储库中的某个位置。

我的问题是:此静态背景图片的位置在哪里?

当我查看有关Directory Structure的Laravel文档时,得出以下结论:

  • 它不应存在于public目录中,因为它不必公开访问(在没有用户名的情况下,永远不会使用图像本身)

      

    public目录包含index.php文件,该文件是进入您的应用程序并配置自动加载的所有请求的入口点。此目录还包含您的资产,例如图像,JavaScript和CSS。

  • 它不应存在于storage目录中,因为该文件夹似乎是用于生成的东西(并且可能会被覆盖)

      

    storage目录包含编译后的Blade模板,基于文件的会话,文件缓存以及框架生成的其他文件。 [...]

  • 它可能存在于resources目录中,因为该目录包含“未编译的原始资源”。但是,没有将图像用作示例的事实使我感到怀疑。

      

    resources目录包含您的视图以及原始的未编译资产,例如LESS,SASS或JavaScript。此目录还包含您的所有语言文件。

您对此问题有何看法?

1 个答案:

答案 0 :(得分:1)

首先,您的应用程序不应依赖于同一文件系统中的文件。您应该使用Laravel Storage API,因为这样一来,您可以轻松地将文件存储在第三方存储解决方案(例如Amazon S3)上,而无需更改配置设置以外的任何内容。

使用本地驱动程序,文件将默认存储在storage/app下,我认为这是正确的位置。实际上,建议如果文件需要公开访问,则应将其存储在storage/app/public/中,并应将其符号链接到public/

如您所见,公共目录用于需要公开访问的所有内容,包括已编译的Less / Sass,JavaScript和图像。资源目录是针对未编译的对应目录的,因此您的Less / Sass文件和JavaScript应该在被Mix处理之前进入该目录。该存储文件夹用于更一般的文件存储用途,但是我将看看使用第三方服务存储这些文件的可能性。