在我的后端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打开它? 谢谢