Разрешить пользователю загружать файл XML
Я подготовил строку XML в PHP и хотел бы позволить пользователю загружать строку в файл XML.
Можно ли предложить пользователю загрузить файл (например, text.xml) без физического сохранения файла xml на сервере?
3 ответа
<?php
header('Content-type: text/xml');
header('Content-Disposition: attachment; filename="text.xml"');
echo $xml_contents;
Если вы используете какую-то буферизацию вывода как часть вашей платформы, вы должны добавить exit () ниже вывода XML, например:
<?php
header('Content-type: text/xml');
header('Content-Disposition: attachment; filename="text.xml"');
echo $xml_contents;
exit();
В противном случае вы получите всю буферизованную страницу, а не только вывод XML.
Когда вы сначала создаете файл XML, используя, например, php´s SimpleXMLElement Вы можете сначала очистить, чтобы предотвратить попадание 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>
Тестирование с Chrome версии 65.0.3325.181, Firefox 59.0.1 и Microsoft Edge 41.16299.371.0