所以我有一个UploadedFile,我想上传到特定的磁盘‘本地’。
// $storedFilePath == "kml/uploadedfile.xml";
$storedFilePath = $request->file->store("kml", "local");该文件实际上被上传到storage/app/kml/uploadedfile.xml -这是正确的,遵循本地磁盘的配置:
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],另一方面,我需要获取该文件的完整URL路径(相对于项目根)。我试过了
Storage::disk("local")->url($storedFilePath);但这会让我忽略/storage/kml/uploadedfile.xml -注意,路径确实缺少应用程序/文件夹。
在Laravel的FilesystemAdapter.php中,有一行确定路径的代码如下(getLocalUrl函数):
$path = '/storage/'.$path;考虑到$path以kml/开头的事实,它不工作是完全有道理的。我的问题是,为什么。为什么这些不对应,如何获得完整的内部(所以不是公共)路径?
发布于 2020-04-08 06:18:24
好吧,它实际上很简单,但我认为Laravel中关于这一点的文档非常令人困惑。Laravel只是希望每个人都有一个从public/storage到storage/app/public的符号链接
他们甚至认为每个使用本地磁盘和url方法的人都想知道公共url,这只对公共磁盘是正确的。
config/filesystems.php
添加了'url‘
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
'url' => storage_path('app')
],现在可以正常工作
https://stackoverflow.com/questions/61090101
复制相似问题