Почему некоторые декодеры Base64 не могут правильно обрабатывать большие двоичные данные? [закрыто]Javascript

Форум по Javascript
Ответить
Anonymous
 Почему некоторые декодеры Base64 не могут правильно обрабатывать большие двоичные данные? [закрыто]

Сообщение Anonymous »

Я работаю над проектом, в котором необходимо декодировать большие строки Base64 (часто >10 МБ) в двоичные файлы, такие как PDF или изображения.
Когда я использую некоторые онлайн-декодеры 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);
Это работает в Chrome, но некоторые другие инструменты возвращают неполные данные или недействительные файлы.
В целях тестирования я также проверил это поведение с помощью моего собственного инструмента преобразования Base64:
https://www.base64converter.online/en/
(отказ от ответственности: я создал этот инструмент для экспериментов с большое декодирование Base64 и преобразование файлов)

Подробнее здесь: https://stackoverflow.com/questions/797 ... -correctly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»