使用Javascript在Internet Explorer中打开应用程序/八位字节流(pdf)

时间:2019-01-09 10:28:55

标签: javascript c# asp.net internet-explorer

在我的后端API中,我流式传输 application / octet-stream 格式的pdf。

在前端,对于任何浏览器,我只需创建一个Blob,然后在以下位置将其打开:

var request = new XMLHttpRequest();
request.open("GET", url, true);
request.setRequestHeader("Authorization", "Bearer " + token);
request.responseType = "arraybuffer";
request.send();

request.onload = function () {
    var blob = new Blob([this.response], { type: blobType }),newUrl = URL.createObjectURL(blob);
    window.open(newUrl, "_blank", "menubar=yes,resizable=yes,scrollbars=yes");

这可行。

尽管Internet Explorer不支持Blob,但我必须使用以下命令打开它:

window.navigator.msSaveOrOpenBlob(blob);

这将提示通常在IE中保存或打开文件。 但是我想直接在新窗口中打开它。

我尝试使用:

...
request.responseType = "application/pdf";
...
window.open("data:application/pdf," + this.response, "_blank", "menubar=yes,resizable=yes,scrollbars=yes");

我也尝试过

window.open("data:application/pdf;base64," + this.response, "_blank", "menubar=yes,resizable=yes,scrollbars=yes");

但这不起作用。

你们中的任何人都知道如何打开pdf吗?我需要使用哪种响应类型?然后如何用window.open打开它? 谢谢

0 个答案:

没有答案