Spatie Medialibrary Custom 自定义目录作为前缀
Spatie Medialibrary Custom Custom Directory As Prefix
我正在使用 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,
我搜索了一下,但找不到确切的答案,
谁能帮帮我?
谢谢
方法在文档 Using a custom directory structure 下。
要覆盖默认文件夹结构,可以在配置文件中将符合 PathGenerator
接口的 class 指定为 path_generator
。
例如,您可以创建一个新的 class 来扩展该接口和 return 模型的一些路径
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/';
}
}
然后更新配置文件并指向 class:
'path_generator' => CustomPathGenerator::class,
参考文献:
spatie/laravel-medialibrary 文档 Using a custom directory structure。
Laracasts Spatie MediaLibrary default storage depending on the model "best answer"。
我正在使用 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,
我搜索了一下,但找不到确切的答案,
谁能帮帮我?
谢谢
方法在文档 Using a custom directory structure 下。
要覆盖默认文件夹结构,可以在配置文件中将符合 PathGenerator
接口的 class 指定为 path_generator
。
例如,您可以创建一个新的 class 来扩展该接口和 return 模型的一些路径
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/';
}
}
然后更新配置文件并指向 class:
'path_generator' => CustomPathGenerator::class,
参考文献:
spatie/laravel-medialibrary 文档 Using a custom directory structure。
Laracasts Spatie MediaLibrary default storage depending on the model "best answer"。