Генерация файла из строки base64 - PullRequest
0 голосов
/ 19 октября 2018

Я использую веб-сервис для получения строки base64, и мне нужно показать этот документ пользователю в виде PDF.

var charactersArray = atob(base64String);
var byteNumbers = new ArrayBuffer(charactersArray.length);

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

var byteArray = new Uint8Array(byteNumbers);

var file = new File([byteArray], "file.pdf", {
    type: "application/pdf",
});

Затем я использую этот «файл» для создания URLс

var url = URL.createObjectURL(file);

Я открываю этот URL в кнопке с помощью директивы ng-click, но я получаю загрузку PDF.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Вам необходимо записать коды символов в byteArray, а не в ArrayBuffer

var charactersArray = atob(base64String);
var len = charactersArray.length;
var byteNumbers = new ArrayBuffer(len);

var byteArray = new Uint8Array(byteNumbers);

for (var i = 0; i < len; i++) {
    byteArray[i] = charactersArray.charCodeAt(i);
}

var file = new File([byteArray], "file.pdf", {
    type: "application/pdf",
});
0 голосов
/ 19 октября 2018

Я недавно работал над таким проектом, и у меня была та же проблема.Я использовал библиотеку NPM base64-arraybuffer для преобразования строки base64 в байтовый массив.

Это библиотека JS, поэтому ее необходимо импортировать следующим образом после установки:

import * as buffer from 'base64-arraybuffer';

URL объекта создается следующим образом:

var byteArray = buffer.decode(base64String);
var file = new Blob([byteArray], {type: 'application/pdf'});
var pdfUrl = URL.createObjectURL(file);

Надеюсь, это поможет!

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