Document.createElement Скачать PDF Не работает в IE - PullRequest
0 голосов
/ 11 июня 2018

ПРОБЛЕМА

Моя загрузка PDF работает в Chrome, но не работает в IE 11/10/9.

В IE мне будет выдано предупреждение о безопасности, но после того, как я нажму Да, чтобы разрешить, ничего не происходит.

КОД

handleDownload = (reportLoc) => {
        var path = reportLoc.item.ReportPath;
        $.get("/Api/Apps/GetFileFromServer?filePath=" + path, (response) => {
            this.setState({ base64EncodedPDF: response });
        }).then(() => {
            let a = document.createElement("a");
            a.href = "data:application/octet-stream;base64," + this.state.base64EncodedPDF;
            a.download = path.substring(path.lastIndexOf("\\") + 1);
            a.click();
            });

    }

Решения, позволяющие работать в Chrome и IE?

1 Ответ

0 голосов
/ 11 июня 2018

После просмотра 2 ссылок, мне удалось решить эту проблему:

https://blog.jayway.com/2017/07/13/open-pdf-downloaded-api-javascript/

Создание BLOB-объекта из строки base64 в JavaScript

Мой код сейчас:

handleDownload = (reportLoc) => {
        var path = reportLoc.item.ReportPath;
        $.get("/Api/Apps/GetFileFromServer?filePath=" + path, (response) => {
            this.setState({ base64EncodedPDF: response });
        }).then(() => {
            if (window.navigator && window.navigator.msSaveOrOpenBlob) {
                var byteCharacters = atob(this.state.base64EncodedPDF);
                var byteNumbers = new Array(byteCharacters.length);
                for (var i = 0; i < byteCharacters.length; i++) {
                    byteNumbers[i] = byteCharacters.charCodeAt(i);
                }
                var byteArray = new Uint8Array(byteNumbers);
                var blob = new Blob([byteArray], { type: "application/octet-stream" });
                window.navigator.msSaveOrOpenBlob(blob, path.substring(path.lastIndexOf("\\") + 1));
                return;
            }
            let a = document.createElement("a");
            a.href = "data:application/octet-stream;base64," + this.state.base64EncodedPDF;
            a.download = path.substring(path.lastIndexOf("\\") + 1);
            a.click();
            });

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