Laravel 5.3 文件系统 store/putFile 不工作
Laravel 5.3 Filesystem store/putFile not working
我在使用 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
我做错了什么或遗漏了什么吗?
其实并不疯狂。存储路径是可配置的,因此如果 Laravel 将其存储在数据库中,但您更改了它,就会出现问题。
当您尝试在 blade 模板中显示您的文件时,您可以简单地添加 storage_path($file)
。这将自动在文件名之前应用正确的存储路径,并且应该可以找到你的文件所在的位置。
告诉我是否有 helped/worked
这是设计使然,因为在您的配置中,您已经将 storage/app 目录设置为 root
目录。
So, it returns the path relative to your root.
假设您希望它是 return 绝对路径而不是相对路径。现在想象一下,如果您的存储驱动程序是 AWS S3 存储桶。在这种情况下,没有 absolute
路径。绝对路径是一个特定于本地驱动程序的术语,但代码被多个驱动程序编写为 extended/used(因此他们希望 putfile 方法的 return 值一致)。因此,在这种情况下,相对路径是唯一的选择
我在使用 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
我做错了什么或遗漏了什么吗?
其实并不疯狂。存储路径是可配置的,因此如果 Laravel 将其存储在数据库中,但您更改了它,就会出现问题。
当您尝试在 blade 模板中显示您的文件时,您可以简单地添加 storage_path($file)
。这将自动在文件名之前应用正确的存储路径,并且应该可以找到你的文件所在的位置。
告诉我是否有 helped/worked
这是设计使然,因为在您的配置中,您已经将 storage/app 目录设置为 root
目录。
So, it returns the path relative to your root.
假设您希望它是 return 绝对路径而不是相对路径。现在想象一下,如果您的存储驱动程序是 AWS S3 存储桶。在这种情况下,没有 absolute
路径。绝对路径是一个特定于本地驱动程序的术语,但代码被多个驱动程序编写为 extended/used(因此他们希望 putfile 方法的 return 值一致)。因此,在这种情况下,相对路径是唯一的选择