【问题标题】:Does Laravel have a convention for a local permanent uploaded file storage location?Laravel 是否有本地永久上传文件存储位置的约定?
【发布时间】:2016-04-08 11:24:32
【问题描述】:

我有一些表单允许用户上传只有他们可以查看的文件,所以我必须将它们存储在某个地方。但是,如果我希望将这些文件保存在本地服务器上,我无法找到有关这些文件通常存储位置的任何信息。因此,我必须假设上传文件的永久存储位置没有约定。我在这个假设中正确吗?

需要明确的是,我不是在谈论临时存储位置。

此外,将所有文件的存储位置作为应用程序目录的子文件夹(启用 gitignore)是不是一个坏主意?或者将它放在应用程序文件夹之外会更好吗?谢谢!

【问题讨论】:

    标签: laravel file-upload laravel-5 storage


    【解决方案1】:

    对于存储用户上传文件的位置没有明确的约定。


    然而,Laravel 附带了一个 storage 目录,它存储框架相关的数据,例如缓存、会话等。顾名思义,它是存储文件的好地方,而不仅仅是框架文件。 Laravel Filesystem Documentation 还提到默认配置位置是 storage/app(但可以根据您的需要进行更改):

    使用本地驱动程序时,请注意所有文件操作都相对于配置文件中定义的根目录。默认情况下,此值设置为 storage/app 目录。因此,以下方法会将文件存储在storage/app/file.txtStorage::disk('local')->put('file.txt', 'Contents');

    Git 默认会忽略此 storage/app 文件夹。

    如果您还需要公开文件,那么您有两种选择:

    1. 将它们存储在public 目录中的某个位置。

    2.按照上面的建议将它们存储在storage 目录中,并从public 位置创建指向该文件夹的符号链接。在 Linux 上你可以运行这个:

    ln -s /path/to/laravel/public/files /path/to/laravel/storage/app/files
    

    当然目录名可以随意,我以files为例。

    第一个选项适用于您没有 shell 访问权限或无法创建符号链接的情况。所以如果可能的话,我建议你使用第二个选项。

    【讨论】:

      【解决方案2】:

      Laravel 上传到临时文件路径,然后你将不得不移动文件:

      $request->file('photo')->move($destinationPath);

      此方法会将文件从其临时上传位置(由您的 PHP 配置确定)移动到您选择的更永久的目的地。

      来源: https://laravel.com/docs/master/requests#files

      【讨论】:

        猜你喜欢
        • 2020-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-03
        • 2021-08-22
        • 1970-01-01
        • 2012-04-12
        • 2018-12-12
        相关资源
        最近更新 更多