Разрешить пользователю загружать файл XML - PullRequest
13 голосов
/ 03 декабря 2010

Я подготовил строку XML в PHP и хотел бы позволить пользователю загрузить строку в файл XML.

Можно ли предложить пользователю загрузить файл (например, text.xml), не сохраняя физически файл xml на сервере?

Ответы [ 3 ]

47 голосов
/ 03 декабря 2010
<?php
header('Content-type: text/xml');
header('Content-Disposition: attachment; filename="text.xml"');

echo $xml_contents;
12 голосов
/ 08 февраля 2012

Если вы используете какую-то буферизацию вывода как часть вашей платформы, вы должны добавить exit () ниже вывода XML, например:

<?php
header('Content-type: text/xml');
header('Content-Disposition: attachment; filename="text.xml"');

echo $xml_contents;
exit();

В противном случае вы получите всю буферизованную страницу, а не только вывод XML.

0 голосов
/ 19 апреля 2018

Когда вы сначала создаете файл XML, используя, например, SimpleXMLElement php, вы можете сначала очистить его, чтобы предотвратить попадание 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 with Chrome Версия 65.0.3325.181, Firefox 59.0.1 и Microsoft Edge 41.16299.371.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...