В частности в документации Laravel
приводится пример $path = $request->file('avatar')->store('avatars');
где говорится что потом можно сохранить путь файла в базе данных,
Но как правильнее будет , хранить путь к файлу или только название файла, и как понять в каком случае что использовать ?
Давайте скажу свою практику, а вы там сами определите, что и на сколько подходит под ваше приложение и под идеалогию ларавела. Возможно просто расскажу свой метод который является одним из подходов при работе с файлами.
Путь к картинке делится на 3 части, условно можно обозначить так:
директория
/каталоги
/имя файла
Пример:
/uploads/avatars/2018/10/20/a_mine.jpg
, где:
директория - /uploads/avatars/
каталоги - 2018/10/20/
имя файла - a_mine.jpg
Смысл директории
- это разделить вложения по смыслу, например: аватарки, для новостей, для блога, для рекламы, какие-то системные файлы и т.д.
Смысл каталогов
- как-то рассортировать файлы, чтобы в одной папке не было много файлов, ибо если у нас в папке будет 10к картинок, то запрос на получение - будет долгим. (P.S. Есть какие-то лимиты, сколько рекомендуется хранить файлов, я не вспомню точно, если будет интересно - загуглите, но там не так уж и много).
Смысл имени файла
- последний этап при идентификации файла. Думаю тут все понятно :)
Что и как хранить:
Директорию
в базе хранить не стоит, это константа она у вас в проекте где-то должна быть задана, условно, эта константа представляет собой массив, где ключ - алиас директории, а значение - путь. Ну наглядно:
[
'avatars' => '/uploads/avatars/',
'blog' => '/uploads/blog/',
'news' => '/uploads/news/',
'attach' => '/uploads/attach/'
]
Максимум что вы можете хранить в таблице, это название алиаса
, чтобы понимать к чему принадлежит файл и только в том случае, если у вас в таблице файлы из нескольких директорий (что логично). Например: общая таблица где все файлы из всех директорий.
Вот с каталогами
и именем
другая басня. Их конечно стоит хранить в таблице, но хранить стоит отдельно друг от друга. Может в БД и больше места занимать будет (но на дворе 2к18, с памятью на винте проблем нет), а в замен вы получите более гибкий инструмент для работы с этими файлами.
P.S. Стоит ли хранить расширения файлов
? А вот тут уже спорный вопрос. Зависит от целей, если будет какой-то фильтр для фильтрации по типу - возможно и стоит добавить если у вас очень очень много файлов. Если нет, то на php
есть функция для получения расширения файла, а со стороны бд, поиск можно осуществлять и штатными средствами. В любом случае если вы не храните расширение, в любой момент добавить эту возможность - не проблема.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Моя проблема заключается в том что основная версия php 52 и изменена быть не может в панели Cpanel
Как получить 5 записей (текст, URL картинки) с сообщества ВКонтакте на JS или PHP
При импорте xml получаю данную ошибку, когда в xml более 100 к записейПодскажите , какие конфиги надо подкрутить на сервере, чтобы увеличить параметры...
Делаю афишу(модуль dle 13) для сайта надо сделать выборку Есть таблица с полем(дат формата Y-m-d) xfields по которому надо сделать выборку, надо выбрать...