Blob для Base64 в JavaScript - PullRequest
       20

Blob для Base64 в JavaScript

0 голосов
/ 26 апреля 2018

Я успешно преобразовал свое изображение base64 (DATA_URI) в BLOB-объект, но не смог вернуть его обратно.

Мой код base64 для блоба выглядит так, как показано ниже: ссылка .

b64toBlob(b64Data, contentType, sliceSize) {
    contentType = contentType || '';
    sliceSize = sliceSize || 512;

    var byteCharacters = atob(b64Data);
    var byteArrays = [];

    for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
        var slice = byteCharacters.slice(offset, offset + sliceSize);

        var byteNumbers = new Array(slice.length);
        for (var i = 0; i < slice.length; i++) {
            byteNumbers[i] = slice.charCodeAt(i);
        }

        var byteArray = new Uint8Array(byteNumbers);

        byteArrays.push(byteArray);
    }

    var blob = new Blob(byteArrays, {type: contentType});
    return blob;
}

Я пытаюсь конвертировать мой BLOB-объект в base64. Я получаю сообщение об ошибке:

ОШИБКА TypeError: Не удалось выполнить readAsDataURL для FileReader: параметр 1 не относится к типу «Blob».

вот мой ответ для получения моего изображения большого размера res link

Я вызываю успешный обратный вызов, но не могу понять это

вот код, в котором я пытаюсь конвертировать BLOB-объекты в base64

if(window.FileReader) {
          var reader = new FileReader();
          reader.readAsDataURL(blob); 
          reader.onloadend = () => {
              var base64data = reader.result;                
              console.log(base64data);
          }
        }

Во время отладки я не вижу reader.onloadend, это ноль, и я не могу вызвать его.

Любая помощь ??

1 Ответ

0 голосов
/ 26 апреля 2018

Я считаю, что вам нужно определить onloadend, прежде чем вы начнете читать данные. Вероятно, завершение чтения и запуска нулевой функции до того, как вы ее назначите. Или, точнее, на данный момент вы звоните readAsDataURL, onloadend - это null.

var reader = new FileReader();
reader.onloadend = () => {
  var base64data = reader.result;                
      console.log(base64data);
}

reader.readAsDataURL(blob); 
...