【发布时间】:2020-07-20 05:45:23
【问题描述】:
所以我有一个 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 - 注意路径确实错过了 app/ 文件夹。
Laravel 的 FilesystemAdapter.php 中决定路径的一行在这里(函数 getLocalUrl):
$path = '/storage/'.$path;
鉴于 $path 是以 kml/ 开头的事实,它不起作用是完全有道理的。我的问题是,为什么。为什么这些不对应,我如何获得完整的内部(而不是公共)路径?
【问题讨论】:
-
对于想要将这个问题作为this one 的副本来结束的人,让我告诉你答案实际上并没有告诉我为什么 Laravel 会给出错误的路径以及我如何真正得到正确的路径而无需手动附加“app/”,因为它会破坏使用存储磁盘的全部目的
标签: laravel filesystems storage