Ошибка при использовании команды 'atob' - не удалось выполнить 'atob' в 'Window': строка, которая должна быть декодирована, неправильно закодирована - PullRequest
1 голос
/ 03 апреля 2019

Мне нужно декодировать строку base64 в файл PDF. Я использую этот код. Но команда window.atob всегда сообщает об этой ошибке: Не удалось выполнить «atob» в «Окне»: строка, которая должна быть декодирована, неправильно закодирована.

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

Функция преобразования

function converBase64toBlob(content, contentType) {
        contentType = contentType || '';
        var sliceSize = 512;
        var byteCharacters = window.atob(content); //method which converts base64 to binary
        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
        }); //statement which creates the blob
        return blob;
    }

вызов функции

self.blob = self.converBase64toBlob(result.contents[0].pdf.replace(/^[^,]+,/, ''), 'application/pdf');
                self.blobURL = URL.createObjectURL(blob);
                window.open(this.blobURL);

1 Ответ

1 голос
/ 03 апреля 2019

Я нашел решение. Api возвращал строку base64 с символом '\'. Таким образом, я удалил все, и это работает просто отлично.

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