【问题标题】:Laravel 5.3 Filesystem store/putFile not workingLaravel 5.3 文件系统存储/putFile 不工作
【发布时间】:2017-01-18 21:40:30
【问题描述】:

我在使用 Laravel 5.3 中的文件系统时遇到问题。我正在尝试将文件保存到本地存储中,但是当我调用 $file->store('directory', 'local')Storage::putFile('directory', $file) 时,它会存储在正确的位置 storage/app/directory/filename 但两个函数返回的路径不包括 storage/app 目录的路径,只需directory/filename

我的本​​地存储驱动配置如下:

'local' => [
            'driver' => 'local',
            'root'   => storage_path('app'),
        ],

显然,我可以用 storage_path() 帮助器包装 $path,但是在阅读文档时这似乎不正确。 https://laravel.com/docs/5.3/filesystem#storing-files

我做错了什么还是错过了什么?

【问题讨论】:

    标签: php laravel laravel-5 filesystems laravel-5.3


    【解决方案1】:

    这实际上并不疯狂。存储路径是可配置的,因此如果 Laravel 将其存储在数据库中,但您更改了它,就会出现问题。

    当您尝试在刀片模板中显示文件时,您可以简单地添加storage_path($file)。这将自动在文件名之前应用正确的存储路径,并且应该找到您的文件所在的位置。

    告诉我这是否有帮助/有效

    【讨论】:

    • 这种说法是有道理的,我想我只是希望 Taylor 在文档中解释这一点。我已经应用了辅助函数,所以我会坚持使用它。如果没有其他人提出其他建议,我会将其标记为答案。谢谢
    • 只要对你有帮助。 ;)
    【解决方案2】:

    这是设计使然,因为在您的配置中,您已经将 storage/app 目录设置为 root 目录。

    因此,它返回相对于您的根目录的路径。

    假设您希望它返回绝对路径而不是相对路径。现在想象一下,如果您的存储驱动程序是 AWS S3 存储桶。在这种情况下,没有absolute 路径。绝对路径是本地驱动程序特有的术语,但代码被编写为由多个驱动程序扩展/使用(因此他们希望 putfile 方法的返回值一致)。因此,在这种情况下,相对路径是唯一的选择

    【讨论】:

      猜你喜欢
      • 2016-08-29
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      • 2017-05-23
      相关资源
      最近更新 更多