Опция сохранения профиля в PHP



Я создал приложение на php. Как я могу сохранить фотографии профиля пользователей? Будет ли это хорошей идеей сохранить их в БД, используя кодирование base64, как это



<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAWgBaAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAAB..." />


Или что-нибудь еще

496   4  

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

    Ничего не найдено.