首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空间中介库自定义目录作为前缀

空间中介库自定义目录作为前缀
EN

Stack Overflow用户
提问于 2020-05-26 16:14:48
回答 1查看 3.1K关注 0票数 2

我正在使用spatie/laravel-medialibrary:8.0

当我上传文件时,它被保存在storage/public目录中。

代码语言:javascript
复制
1/filename.file_extension, 2/filename.file_extension...

我认为1, 2...是文件的ids。

有没有办法根据用户设置不同的前缀目录?

例如,我想把它写成这样。

代码语言:javascript
复制
public/storage/user_id/1/filename.file_extension, 

我搜索了一下,但找不到确切的答案,

有谁可以帮我?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-26 17:28:47

它的方法是在docs 使用自定义目录结构下。

若要重写默认文件夹结构,可以将符合PathGenerator-interface的类指定为配置文件中的path_generator

例如,您可以创建一个扩展该接口的新类,并为模型返回一些路径。

代码语言:javascript
复制
class CustomPathGenerator implements PathGenerator
{
    public function getPath(Media $media) : string
    {
        if ($media instanceof Post) {
            return 'user_id/' . $media->user_id . '/' . $media->id;
        }
        return $media->id;
    }

    public function getPathForConversions(Media $media) : string
    {
        return $this->getPath($media) . 'conversions/';
    }

    public function getPathForResponsiveImages(Media $media): string
    {
        return $this->getPath($media) . 'responsive/';
    }
}

然后更新配置文件并指向该类:

代码语言:javascript
复制
'path_generator' => CustomPathGenerator::class,

参考文献:

空间/拉拉-介质图书馆 Docs 使用自定义目录结构.

空间MediaLibrary的默认存储取决于模型“最佳答案”。

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

https://stackoverflow.com/questions/62026654

复制
相关文章

相似问题

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