Как пользоваться
- Перетащите файл в область загрузки или нажмите на неё, чтобы выбрать файл на устройстве (до 100 МБ).
- Выберите вариант в поле «Формат вывода»: «Base64» — чистый Base64 для API и файлов конфигурации, «Data URI» — для HTML и CSS.
- Включайте параметр «Переносить строки через 76 символов», только если получатель ожидает строки в стиле MIME, например в теле письма.
- Проверьте имя файла, тип MIME и размеры, затем скопируйте результат или скачайте его в виде файла .txt.
Зачем кодировать файл в Base64?
Многие форматы, в которых системы обмениваются данными, допускают только текст. В JSON, XML, YAML, HTML и заголовках писем нельзя хранить произвольные байты: файл может содержать нулевые байты, недопустимые последовательности символов или переводы строк, которые текстовый парсер изменит. Base64 превращает каждые 3 байта файла в 4 символа из набора в 64 знака (латинские буквы, цифры, + и /), поэтому любой файл можно передать как обычную строку, а затем декодировать обратно в точно такие же байты.
Платить за это приходится размером: закодированный текст примерно на 33% больше файла, а переносы строк добавляют ещё немного. Файл размером 3 МБ превращается примерно в 4 МБ Base64.
Где это применяется
- API на JSON и XML. Конечные точки, которые не принимают загрузку через multipart-формы, часто ожидают файл в виде строки Base64 в одном поле, а его имя и тип — в других.
- Вложения в письмах. MIME кодирует вложения в Base64 строками длиной не более 76 символов (RFC 2045). Параметр «Переносить строки через 76 символов» даёт точно такое же форматирование.
- Конфигурация и секреты. Значения в разделе
dataобъекта Kubernetes Secret хранятся в Base64, поэтому сертификат TLS, хранилище ключей или файл лицензии нужно закодировать, прежде чем добавить его в манифест. Системы CI часто так же хранят двоичные секреты в переменных окружения. - Базы данных и исходный код. Небольшой двоичный файл, например шрифт, звук или тестовые данные, можно хранить в текстовом столбце или строковой константе вместо отдельного файла.
Для картинок есть инструмент Изображение в Base64: он умеет менять размер и выдаёт готовые фрагменты HTML и CSS. Чтобы превратить Base64 обратно в файл, воспользуйтесь инструментом Base64 в файл.
Чистый Base64 или data URI?
Чистый Base64 — это только закодированные байты. Именно его ожидают API, Kubernetes, базы данных и большинство программных библиотек; имя файла или тип содержимого обычно передаются в отдельном поле.
Data URI добавляет префикс с типом MIME, например data:application/pdf;base64,, и тогда браузер может использовать всю строку как URL в src, href или CSS-функции url(). Не отправляйте этот префикс в API, которому нужен чистый Base64: многие декодеры его отвергают. Чтобы указать тип MIME вручную или использовать процентное кодирование, попробуйте генератор data URI.
Для JSON, YAML и исходного кода оставляйте перенос строк выключенным. Строка JSON не может содержать настоящие переводы строк, а перенесённые значения в YAML легко ломаются.
Кодирование файла в командной строке
# Linux (GNU coreutils): -w 0 отключает перенос строк через 76 символов, включённый по умолчанию
base64 -w 0 report.docx > report.txt
# macOS
base64 -i report.docx -o report.txt
# Windows PowerShell
[Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\files\report.docx"))
# Kubernetes закодирует файл сам
kubectl create secret generic app-cert --from-file=tls.crt
Часто задаваемые вопросы
Есть ли ограничение на размер файла?
Можно закодировать файлы размером до 100 МБ. Результат примерно на треть больше, поэтому из файла в 100 МБ получится около 133 МБ текста. Показ такого объёма текста может замедлить страницу, поэтому для больших файлов нажимайте «Скачать», а не копируйте результат из поля вывода.
Загружаются ли мои файлы на сервер?
Нет. Файл читается и кодируется с помощью JavaScript в вашем браузере, и по сети ничего не передаётся, поэтому сертификаты, ключи и личные документы остаются на вашем устройстве.
Сжимает или шифрует ли Base64 файл?
Ни то, ни другое. Base64 увеличивает данные примерно на 33%, и декодировать их может кто угодно. Если файл должен остаться конфиденциальным, зашифруйте его перед кодированием; если важен размер, сначала сожмите его, например в архив ZIP или gzip.
Почему в результате есть переносы строк?
Включён параметр «Переносить строки через 76 символов». Такое форматирование соответствует формату MIME, который используется в электронной почте, но большинство API, документов JSON и манифестов Kubernetes ожидают одну непрерывную строку, поэтому для них этот параметр нужно выключить.