2016-12-15 148 views
0

我有一个MVC控制器,将通过ajax调用将base64 pdf字符串发送回客户端。如何在IE上强制下载pdf?

以下行将在单独的Chrome和FF窗口中显示PDF。

<a href=data:application/pdf;base64," + data.PDFResult + " download title='Download pdf document' /> 

这将无法在IE浏览器中工作,并且从我看到的内容看起来并不支持。

所以。而不是在新窗口中显示PDF如何让用户下载PDF?

UPDATE:

  • 试图通过AJAX发送字节[]返回到客户端...

我改变JS到:

var pdfWin = window.open("data:application/octet-stream, " + escape(data), '', 'height=650,width=840'); 

和我的控制器:

[HttpPost] 
     public byte[] GetPDFc(MyObject myData) 
     { 
      var pdfBytes = MethodToGetPDF(myData); 
      return (pdfBytes); 
     } 
+0

不,我在调试时遇到访问被拒绝的情况。 – PrivateJoker

回答

1

http://caniuse.com/#feat=download

- 10 IE does not support download attribute

使用应用程序/八位字节流与文件名

Force PDF download 'only' in Internet Explorer


下载属性应该在边缘浏览器中工作,而不是服务于从服务器上的文件

enter image description here

+0

我们使用的IE11不是边缘。如果我能避免它,我宁愿不要存储PDF。 – PrivateJoker

+0

那么答案是不可能的 – mplungjan

+0

是否有可能只是发回byte []而不是?在我的情况下,我宁愿不将文档保存到磁盘,只是为了让用户查看/下载。我将拥有很多不同文档的高流量,我不希望必须管理删除所有这些副本。 – PrivateJoker