javascript - 在没有提示的情况下在新选项卡上的 IE11 中打开 PDF - mssaveoropenblob

标签 javascript reactjs asp.net pdf

我们正在迁移一个 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);

最佳答案

IE 不允许我们在新选项卡中打开数据 URL(可能是安全原因)并且没有解决方法 - 之前遇到过同样的问题。

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

关于javascript - 在没有提示的情况下在新选项卡上的 IE11 中打开 PDF - mssaveoropenblob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39586024/

相关文章:

javascript - 在 JavaScript 中将数字 (e+) 的指数表示法转换为 10^

asp.net - Telerik ASP.NET RadEditor 和 Azure Blob 存储?

javascript - 将复选框值从子弹出窗口发送到父窗口

asp.net - 如何在 GridView 中设置模板字段的样式(附有 aspx 页面和 CSS)

javascript - 如果 bootstrap.js 被忽略(未导入),你的 react + bootstrap 是否安全

javascript - 我应该使用 JSON 还是 AJAX 作为响应数据?

javascript - 滚动条到水平 div

javascript - 在 jQuery 中组合密码字段的两个验证

reactjs - 尝试运行npm start命令时出错

javascript - ReactJS 导航到新位置并刷新窗口