Когда я использую некоторые онлайн-декодеры Base64, выходные данные либо обрезаются, либо повреждаются.
Например, декодирование одной и той же строки Base64 в JavaScript работает нормально, но декодирование ее с помощью некоторых онлайн-инструментов возвращает недопустимое значение. файл.
Вот небольшой пример:
Код: Выделить всё
const base64 = "data:application/pdf;base64,JVBERi0xLjQKJeLjz9MK...";
const bytes = atob(base64.split(',')[1]);
console.log(bytes.length);
Мои вопросы:
Почему некоторые декодеры Base64 не могут правильно обрабатывать большие двоичные данные?
Существует ли рекомендуемый подход или библиотека для безопасной обработки больших файлов Base64 в браузере или на стороне сервера?
(В целях тестирования я также создал инструмент, который обрабатывает преобразование Base64 → Файл и Файл → Base64 с правильной обработкой фрагментов и дополнений: Base64 Converter Online
. Полное раскрытие: я разработчик этого инструмента.)
Я работаю над декодированием больших строк Base64 (около 10 МБ) в двоичные файлы, такие как PDF или изображения.
Что я пробовал
- Использовал atob() в JavaScript для декодирования строки Base64 непосредственно в браузере.
- Пробывал несколько онлайн-декодеров Base64 для сравнения.
- Даже разделил строку на более мелкие фрагменты и повторно присоединил их перед декодированием.
Полный и читаемый PDF-файл, сгенерированный из строки Base64.
Что произошло на самом деле
- В некоторых браузерах декодирование работает нормально.
- Однако некоторые онлайн-инструменты создают поврежденные или усеченные файлы, когда входные данные Base64 имеют большой размер (более нескольких МБ).
- Некоторые декодеры перестают обрабатывать входные данные на полпути.
Код: Выделить всё
const base64 = "data:application/pdf;base64,JVBERi0xLjQKJeLjz9MK...";
const bytes = atob(base64.split(',')[1]);
console.log(bytes.length);
В целях тестирования я также проверил это поведение с помощью моего собственного инструмента преобразования Base64:
https://www.base64converter.online/en/
(отказ от ответственности: я создал этот инструмент для экспериментов с большое декодирование Base64 и преобразование файлов)
Подробнее здесь: https://stackoverflow.com/questions/797 ... -correctly
Мобильная версия