首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel的UploadedFile存储方法的行为与Storage::url行为不一致

问Laravel的UploadedFile存储方法的行为与Storage::url行为不一致
EN

Stack Overflow用户
提问于 2020-04-08 06:02:43
回答 1查看 263关注 0票数 0

所以我有一个UploadedFile,我想上传到特定的磁盘‘本地’。

代码语言:javascript
复制
// $storedFilePath == "kml/uploadedfile.xml";
$storedFilePath = $request->file->store("kml", "local");

该文件实际上被上传到storage/app/kml/uploadedfile.xml -这是正确的,遵循本地磁盘的配置:

代码语言:javascript
复制
    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

另一方面,我需要获取该文件的完整URL路径(相对于项目根)。我试过了

代码语言:javascript
复制
 Storage::disk("local")->url($storedFilePath);

但这会让我忽略/storage/kml/uploadedfile.xml -注意,路径确实缺少应用程序/文件夹。

在Laravel的FilesystemAdapter.php中,有一行确定路径的代码如下(getLocalUrl函数):

代码语言:javascript
复制
    $path = '/storage/'.$path;

考虑到$path以kml/开头的事实,它不工作是完全有道理的。我的问题是,为什么。为什么这些不对应,如何获得完整的内部(所以不是公共)路径?

EN

回答 1

Stack Overflow用户

发布于 2020-04-08 06:18:24

好吧,它实际上很简单,但我认为Laravel中关于这一点的文档非常令人困惑。Laravel只是希望每个人都有一个从public/storage到storage/app/public的符号链接

他们甚至认为每个使用本地磁盘和url方法的人都想知道公共url,这只对公共磁盘是正确的。

config/filesystems.php

添加了'url‘

代码语言:javascript
复制
   'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
        'url' => storage_path('app')
    ],

现在可以正常工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61090101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档