我在使用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
我做错了什么或遗失了什么?
答案 0 :(得分:0)
当您尝试在刀片模板中显示文件时,您只需添加storage_path($file)
即可。这将在文件名之前自动应用正确的存储路径,并且应该找到您的文件。
告诉我这是否有帮助/工作
答案 1 :(得分:0)
这是设计原因,因为在您的配置中,您已经将存储/应用目录设置为root
目录。
因此,它返回相对于根的路径。
假设您希望它返回绝对路径而不是相对路径。现在假设您的存储驱动程序是AWS S3存储桶。在这种情况下,没有absolute
路径。绝对路径是特定于本地驱动程序的术语,但代码被编写为由多个驱动程序扩展/使用(因此它们希望putfile方法具有一致的返回值)。因此,在这种情况下,相对路径是唯一的选择