如何动态地将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);
}
?>
下载文件的三种简单方法:
-
好旧形式
<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>
-
用JavaScript提交好的旧表单
<script type="text/javascript"> function download(){ document.getElementById("the-form").submit(); } </script> <input type="Submit" value="Download with JavaScript" onclick="download()">
-
切换到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'];
// ...
这应该提示用户下载文件。
相关文章:
- 将JQuery Handontable保存到服务器上的excel文件中
- 如何在服务器上保存数据以备日后使用
- 正在服务器上保存降价内容
- 将处理后的图像发送到服务器进行保存
- 从Div创建图像,并使用Javascript和ASP.net将其保存到服务器
- 保存服务器中的变量
- AngularJS可以在没有任何服务器端技术的情况下将文件保存/写入服务器
- 如何上传一个XML对象并用Perl将其保存在服务器上
- 解析服务器云代码保存对象
- Python在尝试保存新的JSON文件时导致服务器错误
- 将 JSON 数据保存到服务器上
- 在将图像保存到服务器之前检查图像大小
- 缺少用于创建的模板.内部服务器错误-聚合物表单保存到数据库
- 将多维Javascript数组保存到服务器端CSV
- 在drawImage、C#、AJAX、ASP.NET之后将图像从画布保存到Web服务器
- 我正在尝试将javascript文本框的输入保存回服务器.我想从保存的弹出文本框中获得输入,以重命名文件夹
- 将PDF文件从Node.js服务器保存到PhoneGap应用程序
- backbone.js:自上次服务器保存以来有变化吗
- 将映像从远程服务器保存到磁盘
- 如何动态地将XML文件从服务器保存到本地机器