Laravel Store только имя файла при загрузке файла - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть следующий код для загрузки и сохранения файла.

$user->update([
        'display_profile' => request()->display_profile->storeAs('avatars', $name,'public')
]);

Этот файл сохраняется в display_profile как avatars/filename.jpg.

Поскольку у меня несколько версийфайлы для отображения вокруг представлений, которые я использую, используют префиксы, такие как:

thumb_filename.jpg

small_filename.jpg

large_filename.jpg

Мне нужно будет заменить много строк, чтобы вставить префикс на месте, чтобы показать правильную версию изображений.Можно ли в любом случае сохранить только имя файла в базе данных вместо полного пути?

Если нет, то какой лучший способ показать мои файлы в представлении?

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Я использую этот подход в основном:

$file  = $request->file('display_profile');

$name = $file->getClientOriginalName() . '.' . $file->extension();

$file->storeAs('public/avatars', $name);

$user->update([
     'display_profile' => $name
]);

1 голос
/ 23 сентября 2019

Когда вы извлекаете файл из запроса, он будет преобразован как объект UploadedFile.Вы можете легко получить исходное имя следующим образом:

$file = $request->display_profile;

$user->update([
    'display_profile' => $file->getClientOriginalName()
]);

. Для вашего второго вопроса я предлагаю вам создать отношение с классом Image, в котором вы можете хранить все необходимые преобразования изображений.Но это может быть немного сложнее и может потребовать времени для кодирования.К счастью, есть тонны библиотек, которые могут справиться с этим для вас.Мой любимый Медиа-библиотека Laravel

...