繁体   English   中英

如何将XML文件从服务器动态保存到本地计算机?

[英]How to save dynamically XML file from server to a local machine?

请帮帮我。 我的错误在哪里? 我在IIS服务器上有很多XML文件。 点击按钮后链接到XML进入JS文件。 JS发送链接到PHP文件。 PHP必须显示保存对话框以保存此链接。 看代码:

JS:

function showAl(url)
  {
    alert(url);
    var ajax = getRequest();
    ajax.onreadystatechange = function()
    {
        if(ajax.readyState == 4)
        {           
            ...
        }
    }  

    ajax.open("POST", "/do_query.php", true);
    var data = 'info='+url;
    ajax.send(data);
  }

PHP:

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

    header('Content-Type: application/xml;');
    header('Content-Disposition: attachment; filename=file.xml;');

    readfile(str_replace(" ", "%20", $info), false);    
  }
?>

提前致谢 !

下载文件的三种简单方法:

  1. 好老形式

     <form id="the-form" action="/do_query.php" method="post"> <input type="hidden" name="info" value="test"> <input type="Submit" value="Download with regular form"> </form> 
  2. 使用JavaScript提交好的旧表单

     <script type="text/javascript"> function download(){ document.getElementById("the-form").submit(); } </script> <input type="Submit" value="Download with JavaScript" onclick="download()"> 
  3. 切换到GET(需要更改do_query.php ):

     <a href="/do_query.php?info=test">Download with link</a> 

AJAX的问题在于它在当前(HTML)页面上运行。 它可以操纵页面HTML或重定向到另一个位置,但它无法发送自定义HTTP响应。

在使用AJAX时,无法提示用户保存文件,您需要将浏览器窗口指向要下载的文件的URL。 这也意味着您需要使用GET方法而不是POST方法来传输文件。

尝试这个:

JS:

function showAl(url)
{
    window.location.href = '/do_query.php?info=' + url;
}

PHP:

if (isset($_GET['info'])) 
{
    $info = $_GET['info'];

    // ...

这应该提示用户下载文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM