Опция сохранения профиля в PHP
Я создал приложение на php. Как я могу сохранить фотографии профиля пользователей? Будет ли это хорошей идеей сохранить их в БД, используя кодирование base64, как это
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAWgBaAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAAB..." />
Или что-нибудь еще
4 ответов:
Храните изображения на сервере и путь к изображениям в базе данных. Это позволит снизить дополнительную нагрузку на сервер баз данных.
Это хорошая идея / практика обычно только для очень маленьких CSS-изображений, которые будут использоваться вместе (например, CSS-спрайты), когда совместимость IE не имеет значения, и сохранение запроса важнее, чем кэшируемость.
У него есть ряд заметных недостатков:
Не работает вообще в IE6 и 7.
Работает только для ресурсов размером до 32k в IE8. Это предел. это относится и к кодировке base64. Другими словами, не дольше, чем Тридцать две тысячи семьсот шестьдесят восемь персонажи.
Он сохраняет запрос, но вместо этого раздувает HTML-страницу! И делает образы недоступны для восприятия. Они загружаются каждый раз, когда содержащая страница или таблица стилей загружается.
Кодировка Base64 увеличивает размер изображения на 33%.
Если он подается в gzipped ресурсе, data: images почти наверняка это будет ужасная нагрузка на ресурсы сервера! Образы есть традиционно очень интенсивный процессор для сжатия, с очень небольшим количеством сокращение в размер.
Лучше хранить путь к файлу в базе данных, чем хранить файлы в базах данных. Базы данных предназначены для структурированных данных, а не для больших двоичных объектов. Кроме того, хранение баз данных обычно дороже, чем хранение файловой системы. Серверы не нуждаются в специальном кодировании или обработке для доступа к изображениям в файловой системе
Скопируйте изображение base64 " src " в текстовое поле с помощью javascript. Опубликуйте форму с текстовым полем url base64. Его лучше сохранить url в базе данных, а не сохранение файла в базе данных. Вы можете сохранить изображение base64 с помощью этого кода PHP:
<?php define('UPLOAD_DIR', 'images/'); $base64img=$_POST['base64img']; if (stristr($base64img, "data:image/jpeg;base64,")) { $base64img = str_replace('data:image/jpeg;base64,', '', $base64img); $uid=time(); $data = base64_decode($base64img); $file = UPLOAD_DIR . $uid.'.jpg'; file_put_contents($file, $data); }elseif (stristr($base64img, "data:image/png;base64,")) { $base64img = str_replace('data:image/png;base64,', '', $base64img); $uid=time(); $data = base64_decode($base64img); $file = UPLOAD_DIR . $uid.'.png'; file_put_contents($file, $data); }elseif (stristr($base64img, "data:image/jpg;base64,")) { $base64img = str_replace('data:image/jpg;base64,', '', $base64img); $uid=time(); $data = base64_decode($base64img); $file = UPLOAD_DIR . $uid.'.jpg'; file_put_contents($file, $data); } ?>
Comments