<a> tag doesn&#39;t work on IE, safari or Opera</a>上的“下载”属性

时间:2014-01-14 22:03:32

标签: php html5

是否有任何标准的方法来制作类似的东西?我只想要一种从服务器下载xml文件的方法。请帮帮我!

4 个答案:

答案 0 :(得分:3)

不,据我所知,使用HTML无法做到这一点。

您必须在目标网页上修复它。如果发送了某个HTTP标头,浏览器将提供一个下载页面而不是显示它。这应该适用于每个主流浏览器。必要的标题是Content-Type: octet-stream。如何发送这取决于您的设置。

您可以随时通过配置您的Web服务器来发送它,但是如何取决于您正在使用的Web服务器。

另一方面,如果您的XML文件是由PHP脚本生成的,那么很容易。只需在编写任何其他内容之前添加以下行 ,因此最好在所述脚本的顶部添加:

header('Content-Type: application/octet-stream');

如果它是一个静态XML文件......好吧,你可以为它制作一个“代理文件”。添加包含以下内容的PHP文件:

<?php
header('Content-Type: application/octet-stream');
// This "fakes" the file name, so the downloaded file isn't called
// "download_xml_file.php" or whatever you name the script.
header('Content-Disposition: attachment; filename=my_xml_file.xml');
readfile('path_to_the_actual_xml_file.xml');
?>

但要尽量避免这种黑客攻击。这是不必要的膨胀,它将破坏浏览器缓存。

答案 1 :(得分:2)

navigator.msSaveBlob(blob, filename)

https://msdn.microsoft.com/sv-se/library/windows/apps/hh772331

不幸的是,我不知道如何在Safari中使用它。

答案 2 :(得分:0)

在这里,您有一个包含浏览器的表格,以及Mike在评论中发布的与属性下载的兼容性:http://caniuse.com/download

带有属性的实际标签是(只是肯定你输入正确):

<a href="your_path_to_file" download>Download Me!</a>

- 它只能在firefox,chrome和opera中使用,因为它在表中。

答案 3 :(得分:-2)

下载属性仅适用于Firefox和Chrome。它不适用于IE,safari或Opera。