数据URI不适用于IE

时间:2013-06-21 10:31:03

标签: html internet-explorer stream

我尝试使用用户可以下载的javascript动态创建CSV文件。这只需要在IE中工作。

javascript生成的html看起来像这样

 <a href="data:application/octet-stream,field1%2Cfield2%0Afoo%2Cbar%0Agoo%2Cgai%0A">CSV</a>

哪种接缝可以在镀铬中正常工作,但IE10刚好坏了。

有没有更好的方法使用JavaScript动态创建文件,然后为用户提供下载链接?由于用户的限制,我不能使用PHP,因为整个系统需要在客户端运行。系统都需要在触摸屏上工作(没有右键单击选项),因此链接需要让用户能够下载,而不是打开文件。

2 个答案:

答案 0 :(得分:11)

Internet Explorer 10不支持data元素上的a协议。每the documentation,唯一支持的元素/属性如下:

  • 对象(仅限图片)
  • IMG
  • 输入类型=图片
  • 链接
  • 接受URL的CSS声明,例如background,backgroundImage等。

你应该知道你试图做的事情就像网络钓鱼一样;因此,您不应期望浏览器支持此模式。您可以在论文Phishing by data URI中阅读有关数据 - 网络钓鱼的更多信息。

答案 1 :(得分:0)

我遇到了同样的问题,我用Chrome以这种方式下载数据uri:

var link = document.createElement("a");
link.download = dataItem.Filename;
link.href = data;
link.click();

但它在Internet Explorer中不起作用。我找到了一个可以在Internet Explorer https://github.com/rndme/download

中工作的库

对我来说唯一的问题是下载具有更长MIME类型的文件,如odt,docx等。对于所有其他类型的文件,它看起来很棒!