如何从点击按钮下载服务器上的XML文件?

时间:2013-04-08 14:57:32

标签: php html xml download

我有链接到XML文件,它位于服务器上。当用户单击按钮时,他必须使用对话框将XML文件保存到本地磁盘。我确定在“a href”中链接到XML文件,但是浏览器打开了这个文件,而不是保存。如果我“将链接保存为......”一切正常。请帮我解决这个问题。

更新: 服务器 - IIS。 XML文件动态创建。 onClick事件我发送到js链接到我的XML文件,js POST链接到php使用ajax。如何修改我的php以打开“保存对话框”来保存XML文件? JS:

 function funk(url)
    {
    var ajax = getRequest();
    ajax.onreadystatechange = function()
    {
        if(ajax.readyState == 4)
        {
         ...
        }
    }
    ajax.open("POST", "/do_query.php", true);
    ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    var data = 'info='+url;
    ajax.send(data);
    }

php(do_query.php):

<?php
  if (isset($_POST['info'])) 
  {
    $info = $_POST['info'];
  }
?>

2 个答案:

答案 0 :(得分:7)

XML文件应该与HTTP标头Content-Disposition: attachment一起提供。这告诉浏览器下载文件而不是打开它。当然,还必须适当地设置Content-Type标头(application/xml是通用的XML mime类型)。如何添加HTTP标头取决于您的服务器配置:请编辑您的问题以添加一些详细信息。

在Apache .htaccess中,它是

Header set Content-Disposition attachment

在其他服务器中,它会发生变化。

答案 1 :(得分:0)

最简单的方法是制作一个链接到的php文件,并让该php文件包含类似

的内容
<?php
header('Content-Type: application/xml;');
header('Content-Disposition: attachment; filename=blah.xml;');
readfile('blah.xml');

应该强制将文件视为下载。

相关问题