Сохранение изображений в базе данных MySQL и их показ

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

Для этого понадобится только создать в БД таблицу с полем для хранения файлов и перед помещением в БД зашифровать их с помощью алгоритма Base64.

Шифрование исходного файла изображения посредством Base64 осуществляется в два этапа.

  1. Чтение двоичных данных из исходного файла;
  2. Собственно шифрование с выдачей в результате строки Base.

Для сохранения в БД лучше воспользоваться типом данных семейства BLOB. Добавление файла в БД производится обычным SQL запросом (INSERT).

Соответственно, вывод файла из БД также осуществляется запросом, но уже на выборку (SELECT). Например, так:

Важно отметить, что при указании в атрибуте src тега img префикса «data:image/jpg;base64,» исключается необходимость в обратной расшифровке файла «вручную». Браузер в этом случае самостоятельно распознаёт Base64 строку как изображение, выполняет её расшифровку и отображает на странице содержимое исходного графического файла.

Приведённый способ работает для изображений любого формата, которые поддерживаются тегом img во всех последних версиях PHP, включая 7.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *