Могу ли я вставить изображение в таблицу базы данных MYSQL? - PullRequest
7 голосов
/ 18 мая 2010

есть ли способ вставить картинки (не url, рис) в таблицу MYSQL, созданную с помощью phpmyadmin? и если есть, когда я хочу получить эту картинку и вставить ее на страницу, что мне делать? :)

Ответы [ 3 ]

8 голосов
/ 18 мая 2010

Это возможно (с использованием типа BLOB), но почти всегда лучше просто сохранить изображение в файловой системе и просто сохранить путь к изображению в базе данных.

Несколько причин, почему с моей головы:

  1. BLOB увеличат размер вашей базы данных, создавая резервные копии и восстанавливая их потенциально более сложно (хотя некоторые могут утверждать, что это облегчает задачу, поскольку вам нужно только выполнить резервное копирование базы данных, а не базы данных плюс куча файлов ).

  2. Хранение данных в виде больших двоичных объектов может вызвать проблемы с производительностью, если у вас есть ленивый код, который использует select *.

  3. Обслуживание изображений из файловой системы будет быстрее, чем обслуживание их из базы данных, и уменьшит нагрузку на сервер БД.

  4. Вы получаете некоторую гибкость в том, где вы обслуживаете изображения - например, если вы хотите переместить их в CDN в будущем.

1 голос
/ 18 мая 2010

Когда речь идет о статических ресурсах, таких как фоновые изображения, значки меню и т. Д., Я никогда не видел, чтобы кто-нибудь сохранял их в базе данных. Для динамического контента, такого как загруженные пользователем изображения, это не редкость.

Вот некоторые плюсы и минусы хранения изображений в базе данных.

Преимущества:

  • Технически это не отличается от других данных. Просто еще и в двоичном формате.
  • Изображения сохраняются вместе с остальной частью базы данных.
  • Отсутствие головной боли при выходе из синхронизации (наличие пути в базе данных, указывающего на несуществующее изображение или на изображения, на которые нет ссылок в базе данных)

Недостатки:

  • Хранение отдельных файлов - это именно то, на что ориентирована файловая система, поэтому она, скорее всего, будет лучше масштабироваться.
  • Легче вручную отлаживать / просматривать изображения
  • Веб-сервер может обслуживать изображения напрямую (нет необходимости в дополнительном коде для загрузки контента из базы данных и предоставления надлежащего типа MIME и т. Д.).

Лично я всегда обнаруживал, что преимущества перевешивают недостатки, и всегда имел изображения (вместе с mime-типами) в базе данных. Я никогда не замечал никаких недостатков или проблем с производительностью, но с другой стороны, я никогда не работал на действительно больших веб-сайтах.

Похожие вопросы и ресурсы:

0 голосов
/ 18 мая 2010

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

В противном случае сохраните содержимое файла изображения в столбце BLOB, а затем напечатайте <img src="image.php?id=1234" /> в HTML.

image.php должен найти изображение с идентификатором 1234 в базе данных, извлечь содержимое этого столбца BLOB и распечатать его после подачи правильного заголовка HTTP, например header('Content-type: image/gif');

А если серьезно. Просто сохраните файл изображения. Обещаю, это намного меньше боли.

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