Spat ie Пользовательский каталог Medialibrary в качестве префикса - PullRequest
1 голос
/ 26 мая 2020

Я использую spatie/laravel-medialibrary:8.0.

Когда я загружал файл, он был сохранен в каталоге storage/public.

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

Я думаю, что 1, 2... - это идентификаторы файлов.

Есть ли способ поместить другой каталог префиксов в зависимости от пользователя?

Например, я хочу указать вот так.

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

Я искал об этом, но не смог ' Не могу найти точного ответа,

Кто-нибудь может мне помочь?

Спасибо

1 Ответ

1 голос
/ 26 мая 2020

Путь к go в документации Использование настраиваемой структуры каталогов .

Чтобы переопределить структуру папок по умолчанию, класс, соответствующий интерфейсу PathGenerator, может быть указан как 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 Docs Использование настраиваемой структуры каталогов .

Laracasts Spat ie Стандартное хранилище MediaLibrary в зависимости от модели"лучший ответ".

...