php. Узнать размер base64 закодированного файла


Предположим, что у вас есть файл, который закодирован в формат base64.
Он может храниться в базе данных в виде строки или сохранен в текстовом файле и тд...
И вам нужно каким то образом получить размер файла из данной закодированной строки.
В данной статье я расскажу как это можно сделать.

Для начала нужно пояснить, что это за кодировка base64 и зачем она нужна.
Кодировка Base64 предназначена для корректной передачи бинарных данных по протоколам, не поддерживающим 8-битную передачу, например, для отправки тела письма или хранения и передачи картинок.
По сравнению с оригиналом, данные закодированные в Base64, занимают на 33% больше места.

Пример кодирования и получения размера изображения:
Я закодировал данное изображение в base64.
$base64 = base64_encode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/base64-file-size.png'));

Теперь переменная $base64 содержит:
Я опубликовал только часть закодированной строки, так как строка очень длинная.

Теперь получаем размер файла из данной закодированной строки:
В первую очередь декодируем данные из переменной $base64. Для этого воспользуемся функцией base64_decode.
И получаем размер строки в байтах с помощью функции mb_strlen с передачей вторым параметром значение '8bit'.
echo mb_strlen(base64_decode($base64), '8bit'); // Размер изображения в байтах

Результат выполнения кода:
8603

Исходный размер файла:


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

Весь код данной статьи:
Внимание! У Вас нет прав для просмотра скрытого текста.
Содержимое могут видеть только зарегистрированные пользователи.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.