基本上,我编写了一个脚本,根据用户输入生成一个 XML 文件。在文件生成后,会出现一个下载链接,如下所示:
<a href="path/to/file.xml">Download File</a>
但是当它被点击时,它会在浏览器中打开xml文件,我希望在链接被点击时它能够开始下载。有没有办法实现这个功能呢?
基本上,我编写了一个脚本,根据用户输入生成一个 XML 文件。在文件生成后,会出现一个下载链接,如下所示:
<a href="path/to/file.xml">Download File</a>
但是当它被点击时,它会在浏览器中打开xml文件,我希望在链接被点击时它能够开始下载。有没有办法实现这个功能呢?
是的,有这个功能。需要指定一些标头。具体如何工作取决于您使用的语言,但这里是一个使用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中遇到过这个问题,这种方法解决了它)... - ircmaxell.htaccess
文件中即可。<Files *.xml>
ForceType application/xml
Header set Content-Disposition attachment
</Files>
download.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>
当浏览器看到一个链接时,它的行为并不取决于链接本身,而是取决于链接的目标。您的Web服务器应该发送适当的头信息:Content-Disposition: attachment;filename="file.xml"
,以告诉浏览器应该提示用户保存文件,而不是直接显示它。
这取决于客户端计算机对 XML 文件的处理方式。如果您双击 XML 文件,它可能会在您的浏览器中打开。