вход
регистрация
Восстановить доступ

base 64 реализация в примерах.

 

Явное преимущества этого формата передачи данных является текст. Для загрузки изображения на сервер вам нужно передать на сервер изображение, потом обработать его на ошибки и лишь потом сохранить на сервер. Что мы получаем конвертируя в base64, мы получаем текст и уже передаем на сервер не файл, а обычный текст. Обработка текста происходит гораздо легче чем обработка файлов.

Наглядный пример кода приведен ниже:

$str = "Строка в кодировке UTF-8"; 
echo base64_encode($str);


Результат выполнения данного примера:

0KHRgtGA0L7QutCwINCyINC60L7QtNC40YDQvtCy0LrQtSBVVEYtOA==



Мы избавились от загрузки файлов на сервере.
Где это может пригодится?



У нас есть Админка и модуль фотогалереи, но вот сюрприз папка куда нужно загружать картинки стоит с блокировкой на запись и у нас уже не получается загрузить изображения, согласитесь досадно. Тут мы решила обойти блокировку довольно хитрым способом, загружаем документ на сервер и если сервер нам отвечает что стоит блокировка на запись мы ковертируем в base 64 и сохраняем в базу данных.
Ни чего гениального в этом нет но очень удобно, ну и как всегда не обошлось без подводных камней. Когда мы попытались вывести на странице быльше 30 изображений из таблице, оказалось что наша идея оказалась очень плохой. Страница долго загружалась, было принято решение конвертить на лету изображения обратно в обычный файл.

На заметку кто связан с твиттером знают, что для создания статьи нужно прописать для статья мета теги и также указать изображения для статьи. К чему я вспомнил про твиттер, он может прочитать картинку только если она файл, base64 он не воспринимает и как вы догадались именно на этом проекте нам
понадобилось выводить твиты. Решением было конвертация в онлайн режиме:

 

 

Главная страница метатеги:

<!-- TWITER --> 
<meta name="twitter:site" content="@evostyleru">
<meta name="twitter:creator" content="@evostyleru">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="<?php echo $twitter["meta-head"]; ?>">
<meta name="twitter:description"
content="<?php echo $twitter["description"]; ?>">
<meta name="twitter:image:src"
content="https://www.evo-style.ru/images/twitter.php?link=<?php echo $twitter["id"]; ?>" >
<meta name="twitter:image:width" content="435">
<meta name="twitter:image:height" content="375">

Ну и конечно реализация самой картинки:

include $_SERVER["DOCUMENT_ROOT"]."/bd.php"; // База данных 
$t=mysql_query("SELECT `icon` FROM `page` WHERE `id`=".$_GET["link"]." LIMIT 1 ");
if(mysql_num_rows($t)>0) { $s=mysql_fetch_assoc($t); }

$icon = $s["icom"];

$size = getimagesize($icon); // если это изображение и у него определён размер, то продолжаем
if ($size){

// ОПРЕДЕЛЯЕМ МАКСИМАЛЬНЫЕ ШИРИНУ И ВЫСОТУ ИЗОБРАЖЕНИЯ
$width = 438; $height = 220;
header("Content-type: image/jpeg");
// ПОЛУЧАЕМ НОВЫЕ РАЗМЕРЫ
list($width_orig, $height_orig) = getimagesize($icon);

if ($width && ($width_orig < $height_orig)) {
$width = ($height / $height_orig) * $width_orig;
} else {
$height = ($width / $width_orig) * $height_orig;
}
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($icon);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
imagejpeg($image_p, null, 100);
// удаляем изображение
unlink ($icon);
} else {
// ну и если что то полшло не так
exit("Загружаемый файл не изображение...");


Все было хорошо обошли этот баг, но радоваться долго не пришлось, могазин в котором было 850 товаров просто перегрузил нашу базу такими картинками и пришлось вновь искать выход из сложившийся ситуации. И было принято решение ковертировать все товары из base 64 в обычные файлы.

Конвертация из base 64:

function base64_to_jpeg( $base64_string, $output_file ) { 
$ifp = fopen( $output_file, "wb" );
fwrite( $ifp, base64_decode( $base64_string) );
fclose( $ifp );
return( $output_file );
}

$image = base64_to_jpeg( $my_base64_string, "tmp.jpg" );

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

Если у вас есть более интересные примеры использования будем рады если вы ими поделитесь с нами.

 

О компании

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

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

Статьи

Новости

Тонкие грани рейтинга

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

Минимализм в стиле

Уменьшено время загрузки сайта при помощи загрузки только необходимых для сайта файлов

Обновление дизайна

Рады представить вам обновленный дизайн нашего сайта, приятный стиль без потери функционаьности приятно вас удивит.

Интересное

Copyright © 2018 ES artCat. Все права защищены. Разработано Zonesa.ru - CMS ASP

ASP! is Free Software released under the GNU General Public License.

Copyright © 2012. CMS - Art Studio PRO Загружено за [PHP] 0.0459 сек. [JS]