Возникла проблема при отправке двоичного двоичного объекта (с файлом XML) на клиентскую сторону - PullRequest
0 голосов
/ 05 марта 2020

Сервер отправляет мне объект, содержащий массив byte [] большого двоичного объекта (с содержимым XML). Java Spring преобразует этот байтовый массив в формат base64, так что, наконец, на стороне клиента я получу данные base64 большого двоичного объекта.

Ответ, который я получаю от сервера:

ОТВЕТ ОТ СЕРВЕРА: {content: "base64BlobHere"} На стороне клиента я делаю запрос на получение xml content

getXmlContent() {

//makeRequestService.getXmlContent is only an observable that is making a GET Request

this.makeRequestService.getXmlContent.subscribe((response)=> {

    const file = new FileReader();
    file.onload = res => {
      //Here I should be able to read the content of the file as text/string.
       console.log(res.target);
     };

     file.readAsText(b64ToBlob(response.content));
    })
}

Для чтения из файла, который я пытался преобразовать с помощью base64 содержимого в большой двоичный объект, чтобы получить мои данные.

 b64ToBlob(b64Data, contentType = "text/xml", sliceSize = 512) {

    const byteCharacters = atob(b64Data);

    const byteArrays = [];

    for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {

      const slice = byteCharacters.slice(offset, offset + sliceSize);

      const byteNumbers = new Array(slice.length);

      for (let i = 0; i < slice.length; i++) {

        byteNumbers[i] = slice.charCodeAt(i);

      }

      const byteArray = new Uint8Array(byteNumbers);

      byteArrays.push(byteArray);

    }

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

    return blob;
  }

Я думаю, что мне что-то не хватает, и я пытаюсь прочитать данные из этого xml файл. Я был бы рад получить некоторые предложения о том, как подойти к этому вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...