我已经在PHP中准备了一个XML字符串,我想让用户在XML文件中下载字符串。
是否可以为用户提供下载(例如text.xml)而无需将xml文件实际保存到服务器?
答案 0 :(得分:46)
<?php
header('Content-type: text/xml');
header('Content-Disposition: attachment; filename="text.xml"');
echo $xml_contents;
答案 1 :(得分:12)
如果您使用某种输出缓冲作为框架的一部分,则必须在XML输出下面添加exit(),如下所示:
<?php
header('Content-type: text/xml');
header('Content-Disposition: attachment; filename="text.xml"');
echo $xml_contents;
exit();
否则,您将获得整个缓冲页面,而不仅仅是XML输出。
答案 2 :(得分:0)
首先使用php的SimpleXMLElement创建XML文件 您可能希望先清理以防止该HTML代码位于该下载的xml文件中。这就是我想出的:
$xml = new SimpleXMLElement("<root/>");
$xml->addChild("foo", "bar");
ob_end_clean();
header_remove();
header("Content-type: text/xml");
header('Content-Desposition: attachment; filename="foobar.xml"');
echo $xml->asXML();
exit();
这就是下载的“foobar.xml”文件的外观:
<?xml version="1.0"?>
<root><foo>bar</foo></root>
Testet与Chrome版本65.0.3325.181,Firefox 59.0.1和Microsoft Edge 41.16299.371.0