Файл в Base64
Файл в Base64 / data URI · Base64 обратно в файл · автоматический предпросмотр картинок
Base64 是怎么膨胀三分之一的
Base64 把每 3 个字节(24 位)切成 4 个 6 位,每个 6 位查表落成一个可打印字符(A–Z、a–z、0–9、+、/),于是二进制变成能塞进 JSON、XML、邮件与 HTML 属性的纯文本。字节数不是 3 的倍数时用 = 补位:余 1 字节补 ==、余 2 字节补 =。所以编码后长度恒为 4 × ⌈字节数 ÷ 3⌉——本页显示的膨胀率是实测字符数 ÷ 原始字节数,并与这个理论值逐字节核对,对不上会明确标出来。
Base64 不是加密,也不是压缩。它只是换字母表:任何人拿到都能一步还原,体积还涨约 1/3。敏感内容请用真正的加密(AES 等),需要变小请用压缩——两件事都不是本页在做的。
data URI 是「前缀 + Base64」。形如 data:image/png;base64,iVBOR…:data: 后面是 MIME 与可选参数(如 ;charset=utf-8),;base64 声明编码方式,逗号之后才是内容。把图片直接写进 HTML 的 src、把字体写进 CSS 用的就是它——代价是体积膨胀且无法被单独缓存。
大文件为什么分块读。编码按约 1MB 一块顺序读取,块长取 3 的整数倍(这样每块都能独立编码、直接拼接,不会在块边界多出补位符),每块编码完立即释放字节。结果是内存里只多出 Base64 文本本身;但文本仍要完整放进页面(约 1.33 倍),所以超过 20MB 请改用命令行工具。
Частые вопросы
Ничего не загружается. Чтение, кодирование и декодирование идут в браузере - ни байта файла не покидает машину, перезагрузка стирает, в localStorage ничего не пишется. Но знайте: Base64 - кодирование, а не шифрование. Он меняет двоичное на текст, чтобы влезло в JSON, письмо или HTML - любой, кто это получит, в один шаг вернёт оригинал. Для тайны берите настоящее шифрование вроде AES. И объём раздувается примерно на треть - не считайте это сжатием при передаче большого.
20МБ на файл. При кодировании чтение идёт кусками около 1МБ с освобождением после каждого, так что файл не копируется в память целиком несколько раз; но текст Base64 должен лесть на страницу целиком (примерно 1,33 объёма), плюс пределы памяти браузера - для больших файлов используйте командную строку: на Linux и macOS base64 файл > выход.txt, в Windows PowerShell - однострочный вызов Convert на байтах файла. При выборе нескольких файлы обрабатываются по одному, каждая строка списка показывает свой статус.
Три зацепки по убыванию веса: MIME внутри data URI (data:image/png;base64,... прямо называет тип); двоичная подпись в начале (PNG - 89 50 4E 47, JPEG - FF D8 FF, PDF начинается %PDF, ZIP - PK); если содержимое читается как текст - предлагаем .txt. Когда ни одна не решает, файл получает имя .bin с явной пометкой, что тип по содержимому не вывести: расширение - лишь предложение для имени загрузки, байты не трогаются, переименуйте как надо - и откроется нормально.
Страница преобразования кодировок - для мелких текстовых кусочков (текст в Base64, URL-безопасный вариант, снять выравнивание) плюс быстрое копирование одного файла; эта страница - для файлов: пакетный выбор, кусковое чтение больших, исходный объём и коэффициент раздутия, чистый Base64 или форма data URI, и обратное превращение Base64 в скачиваемый файл с распознаванием типа и предпросмотром картинок. Кусок текста - на преобразование кодировок; файлы - особенно картинки, PDF или архивы от десятков КБ - сюда.