2

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

更新:服务器 - IIS。XML 文件动态创建。onClick 事件我发送到 js 链接到我的 XML 文件,js POST 链接到使用 ajax 的 php。如何修改我的 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'];
  }
?>
4

2 回答 2

7

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

在 Apache.htaccess中,它是

Header set Content-Disposition attachment

在其他服务器中,它会有所不同。

于 2013-04-08T14:59:16.533 回答
0

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

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

这应该强制文件被视为下载。

于 2013-04-08T15:01:02.753 回答