Laravel 5.3 Filesystem store / putFile无法正常工作

时间:2017-01-18 10:53:14

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

我在使用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

我做错了什么或遗失了什么?

2 个答案:

答案 0 :(得分:0)

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

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

告诉我这是否有帮助/工作

答案 1 :(得分:0)

这是设计原因,因为在您的配置中,您已经将存储/应用目录设置为root目录。

  

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

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