【问题标题】:Spatie Medialibrary Custom Custom Directory As PrefixSpatie Medialibrary 自定义自定义目录作为前缀
【发布时间】:2020-09-13 12:32:23
【问题描述】:

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

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

1/filename.file_extension, 2/filename.file_extension...

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

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

例如,我想这样放。

public/storage/user_id/1/filename.file_extension, 

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

谁能帮帮我?

谢谢

【问题讨论】:

标签: php laravel laravel-5 file-upload laravel-medialibrary


【解决方案1】:

要走的路在文档Using a custom directory structure 下。

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

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

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/';
    }
}

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

'path_generator' => CustomPathGenerator::class,

参考资料:

spatie/laravel-medialibrary 文档Using a custom directory structure

Laracasts Spatie MediaLibrary default storage depending on the model“最佳答案”。

【讨论】:

猜你喜欢
  • 2014-12-23
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
  • 2014-07-08
  • 2021-04-04
  • 2019-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多