【发布时间】:2010-10-01 17:24:38
【问题描述】:
基本上,我编写了一个脚本,该脚本根据用户输入生成一个 xml 文件。文件生成后,下载链接如下所示:
<a href="path/to/file.xml">Download File</a>
但是当点击它时,它会在浏览器中打开 xml,我希望它在点击链接时开始下载。有什么方法可以实现吗?
【问题讨论】:
标签: php javascript html
基本上,我编写了一个脚本,该脚本根据用户输入生成一个 xml 文件。文件生成后,下载链接如下所示:
<a href="path/to/file.xml">Download File</a>
但是当点击它时,它会在浏览器中打开 xml,我希望它在点击链接时开始下载。有什么方法可以实现吗?
【问题讨论】:
标签: php javascript html
是的,有。它确实需要指定一些标题。具体如何工作取决于您使用的语言,但这里有一个使用 php 的示例,取自 php.net:
<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');
// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// The PDF source is in original.pdf
readfile('original.pdf');
?>
基本上,首先我们告诉客户端我们发送的是什么类型的文件,然后我们告诉客户端我们发送的是一个附件和它的名称,而不是一个要显示的页面,最后是我们将文件打印/读取到输出。
鉴于您已经在使用 php 生成 xml 文件,我建议将上面的标头命令添加到生成 xml 文件的代码中,看看是否可以解决问题。
【讨论】:
target="_blank" 以便 IE 在新窗口中打开它,否则 IE 将不知道如何处理它(我们在这解决了IE6和7)...
如果您碰巧将 Apache 用于您的 Web 服务器,并且您总是想强制下载 XML 文件,那么有一种更有效的方法来执行 @chigley 建议的操作。只需将以下内容添加到 .htaccess 文件中即可。
<Files *.xml>
ForceType application/xml
Header set Content-Disposition attachment
</Files>
【讨论】:
当浏览器看到一个链接时会发生什么不依赖于链接,而是依赖于链接的目标。您的网络服务器应该发送适当的标头:Content-Disposition: attachment;filename="file.xml" 告诉浏览器它应该提示保存文件而不是显示它。
【讨论】:
这取决于客户端计算机如何处理 XML 文件。如果你双击一个 XML 文件,它可能会在你的浏览器中打开。
【讨论】:
下载.php:
header('Content-Type: text/xml');
header('Content-Disposition: attachment; filename="file.xml"');
readfile('/path/to/file.xml');
HTML:
<a href="download.php">Download</a>
【讨论】: