Laravel - 获取存储磁盘路径

Dew*_*159 6 php laravel

我为公共上传创建了一个新的存储磁盘.我这样使用它:

Storage::disk('uploads')->get(...);
Run Code Online (Sandbox Code Playgroud)

但我试图找到一种方法来获取磁盘本身的路径,我花了一些相当长的时间在框架文件之间思考,但找不到我想要的东西.我想在这样的场景中使用它:

$icon = $request->file('icon')->store('icons', 'uploads');
Image::make(Storage::disk('uploads')->path($icon))->resize(...)->save();
Run Code Online (Sandbox Code Playgroud)

那么,如何获得存储磁盘的路径?

Dew*_*159 17

经过额外搜索后,我发现我可以使用以下内容:

$path = Storage::disk('uploads')->getAdapter()->getPathPrefix();
Run Code Online (Sandbox Code Playgroud)

但是,仍然不是" - > path()"方法在这里给出或者是什么!

  • 我想知道您在哪里找到代码?没有书面文件,对不对? (3认同)
  • 然而,在 Laravel 9 中不再适用,为此我还需要一个解决方案来替换 `$this->storageDisk->getAdapter()->setPathPrefix(public_path('/uploads/'.$this->currentProject->id) );` (3认同)

use*_*937 7

我们还可以直接从配置助手访问磁盘存储路径:

config('filesystems.disks');
Run Code Online (Sandbox Code Playgroud)


PiT*_*ber 6

有一个功能!

Storage::disk('uploads')->path('/');
Run Code Online (Sandbox Code Playgroud)

https://laravel.com/api/5.8/Illuminate/Filesystem/FilesystemAdapter.html#method_path

好像从5.4开始就出现了!我没注意到

  • 对我来说,当我的根目录是用 storage_path("location") 定义时,这会附加“/”以形成双斜杠。它生成了“path/to/location//”。仅使用一个空字符串 '' 作为参数,它就生成了一个带有单斜杠的路径。这是别人的经验吗? (4认同)