Как в base64 кодировать необработанный PDF-контент (байты) в JAVASCRIPT? - PullRequest
0 голосов
/ 03 декабря 2018

Мне нужно в base64 кодировать содержимое необработанного PDF (уже получено необработанное содержимое).но я не знаю почему, но btoa () ожидает, что ввод будет строкой, состоящей из символов ASCII.

btoa('ééééééé');
>> InvalidCharacterError: String contains an invalid character

Есть ли способ конвертировать необработанные байты в base64 в javascript без перекодирования алгоритма base64?(кстати, работа с изображениями и любым другим содержимым файлов)

Заранее спасибо за ответы!

[enter image description here

1 Ответ

0 голосов
/ 05 декабря 2018

Если вы храните содержимое как Blob, используйте объект FileReader, чтобы преобразовать его в URI данных, а затем удалите его префикс:

var reader = new FileReader();
reader.onload = function () {
  var b64 = reader.result.replace(/^data:.+;base64,/, '');
  console.log(b64);
};
reader.readAsDataURL(your_blob);

Другой способ, если вы храните его как ArrayBuffer:

// Create a Uint8Array from ArrayBuffer
var codes = new Uint8Array(your_buffer);

// Get binary string from UTF-16 code units
var bin = String.fromCharCode.apply(null, codes);

// Convert binary to Base64
var b64 = btoa(bin);
console.log(b64);
...