Что является лучшим способом сохранить имя изображения или полный URL в базе данных - PullRequest
0 голосов
/ 30 августа 2018

Какой лучший подход для хранения имени изображения в базе данных? У меня есть два варианта, во-первых, сохранить только имя изображения, например. apple.png и второй вариант - сохранить полный URL-адрес изображения, например, abc.com/src/apple.png.

Любая помощь будет оценена. Спасибо.

Ответы [ 4 ]

0 голосов
/ 30 августа 2018

Другим распространенным способом является создание изображения таблицы с cols

  • ID
  • тип (enum или int)
  • имя (имя файла) Определите в своем приложении (лучше в модели) такие типы, как

USER_AVATAR = 1; PRODUCT_IMG = 2;

Определить карту путей для каждого типа изображения, например:

$paths = [ USER_AVATAR => '/var/www/project/web/images/users', ... ];

и использовать идентификаторы из этой image таблицы в других таблицах. Это называется полиморфная ассоциация . Это самый гибкий способ хранения изображений.

0 голосов
/ 30 августа 2018

Рекомендуется не сохранять полный путь к изображению, как abc.com/src/apple.png, а сохранять путь к определенному домену изображения. Пример:

  • Изображение пользователя: /user/-1993/p5.tj/avatar/img.png

  • Имидж продукта: /product/ndomid‹/1.png

В этом случае вы избегаете прикрепления изображений к определенному серверу, пути к серверу, URL-адресу и т. Д. Например, вы решите перенести все ваши изображения на другой сервер, в этом случае вам не нужно изменять все записи в БД.

0 голосов
/ 30 августа 2018

2 ответа уже достаточно хорошо это охватили. Лучше всего сохранять путь к каталогу, а не сохранять весь путь URL. Некоторые из причин уже были рассмотрены, например, облегчение перемещения папок на другой сервер без каких-либо изменений в файловой логике.

То, что вы могли бы сделать, это также иметь все в одном каталоге, сослаться на это, а затем просто сохранить имя изображения. Однако, я бы не рекомендовал бы это. Другая структура просто облегчает навигацию и просмотр. Хорошая файловая структура - это то, за что вы потом поблагодарите себя, если вам когда-нибудь придется по каким-то причинам вручную что-то делать.

С учетом сказанного, я хотел бы добавить этот трюк в микс:

$_SERVER['DOCUMENT_ROOT']. Это всегда заставляет вас начинать с корневого каталога , в отличие от необходимости выполнять утомительные действия, такие как ../../ и т. Д. Это выглядит как беспорядок.

Таким образом, в итоге, как путь к изображению, вы получите что-то вроде:

<img src="<?php echo $_SERVER['DOCUMENT_ROOT'].'/'.$row['filePath']; ?>" >

$row['filePath'] - ваш сохраненный путь к файлу из базы данных.

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

0 голосов
/ 30 августа 2018

Прежде всего вам нужно загрузить все изображения в общую папку вашего проекта, поэтому нет необходимости сохранять domain name

Если вы храните все изображения в одном каталоге, то нет проблем с сохранением в базе данных только imagename

Вы можете легко получить доступ к изображениям, как <img src="/foldername/imagename.jpg" />

но если в вашем проекте есть несколько каталогов вроде

  1. профиль: для сохранения изображения аватара пользователя,
  2. background: для сохранения фоновых изображений,

тогда лучше сохранить изображение с путем в базе данных, например "/profile/avatar.jpg"

, чтобы вы могли получить доступ к изображению, как <img src="imagepathhere" />

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...