在新选项卡上的IE11中打开PDF而不提示 - mssaveoropenblob

时间:2016-09-20 05:02:22

标签: javascript asp.net pdf reactjs fetch

我们正在迁移ASP.NET MVC应用程序,该应用程序具有通过FileContentResult在新选项卡中打开PDF的功能。

return new FileContentResult(byteArray, "application/pdf");

现在我们将此应用程序迁移到React,并从API(服务器端)迁移,我们将回复如下响应: -

response.Content = new ByteArrayContent(pdfByteArray);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");

在React UI方面,我们使用如下响应: -

postData(POST_API_ENDPOINT, requestData, ((err, data) => {
  if (data.ok) {
     data.blob().then(function(myBlob) {
         if (window.navigator && window.navigator.msSaveOrOpenBlob) {
            return window.navigator.msSaveOrOpenBlob(myBlob, "sample.pdf");
         }
         else {
           var objectURL = URL.createObjectURL(myBlob);
           return window.open(objectUrl);
          }
        });
      }
  }));

现在,据我所知,msSaveOrOpenBlob将始终提示用户打开/保存"在IE11内。如果我需要在没有提示的情况下在不同的选项卡中打开PDF,我还有哪些其他选项?

我想还有另一种方法可以通过以下方式实现,但URL长度再次限制了这一点。

window.open("data:application/pdf;base64, " + base64EncodedPDF);

1 个答案:

答案 0 :(得分:1)

IE不允许我们在新标签页中打开数据网址(可能是安全原因)并且没有解决方法 - 早先遇到同样的问题。

我们使用msSaveOrOpenBlob - 找不到替代方案。