@Starvings

Как записать base64 в таблицу?

Нужно предзаполнить таблицу данными, среди которых фотографии в base64. Как возможно их записать? Уже и в настройках прописал max_allowed_packet = 64M и форматы перепробовал различные. Но строка слишком длинная. Как быть в данном случае?
Заполнение происходит посредством phpMyAdmin.
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 3
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
1) Хранить картинки в бд крайне кривое решение. Это может быть оправдано только в случае когда там хранится пара иконок, вставленная в текст прям через <имг срц="тут_бэйз64_строка"... и нет желания все это переделывать ради 2 кастомных микрокартинок. В остальном - конвертировать в картинку и хранить на диске. В бд писать путь до картинки. Если это какой-то аватар или картинка, связанная с другим объектом, соответственно заводить отдельную таблицу на картинки и связь один-к-одному или один-ко-многим, в зависимости от ситуации. В худшем случае поле в той же таблице, если точно будете знать что других картинок к объекту относиться не будет, но это должен быть путь до реальной картинки на диске.
2) Почему хранение в бд - плохая идея: При каждом запросе у вас будет вытаскиваться пару мегабайт данных из бд, передаваться по каналу соединения с бд, помещаться в память, и после этого еще нужно программно отдавать картину, кроме прочего картинка в бэйс64 занимает примерно на 30% больше места.
Когда у вас есть картинка на диске, вы просто вставляете путь до нее, это ~50 символов, и сервер отдает ее БЕЗ УЧАСТИЯ ПРОГРАММНОЙ ЧАСТИ, средствами вебсервера и ОС. Это быстрее, потребляет меньше памяти и занимает меньше места в хранилище.
Ответ написан
Комментировать
@d-sem
Если возникла необходимость заполнять базу данных файлами, то возможно, что базы данных тут не нужны.
Сохраняйте ссылки на файлы.
Ответ написан
Комментировать
vabka
@vabka
Токсичный шарпист
Не нужно хранить файлы в реляционной базе данных. Они для этого не предназначены.
Если скажешь что "ну очень надо". Ответ всё равно нет.
Вы же не пытаетесь возить на легковушке кирпичи, верно? Вы берёте для этого грузовик - вот и тут аналогично.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы