Я использую domdocument для создания xml-файла:
$dom = new DOMDocument('1.0', 'iso-8859-1'); echo $dom->saveXML();
Когда я нажимаю ссылку на этот файл, он просто отображает его как XML-файл. Как я могу попросить скачать вместо этого? Кроме того, как я могу запросить его загрузить как «backup_11_7_09.xml» (вставить сегодняшнюю дату и поместить его как xml) вместо реального имени php-файла, которое является «backup.php»,
Установите заголовок Content-Disposition
в качестве вложения до вашего эха:
<? header('Content-Disposition: attachment;filename=myfile.xml'); ?>
Конечно, вы можете отформатировать myfile.xml
с помощью strftime()
чтобы получить форматированную дату в имени файла:
<? $name = strftime('backup_%m_%d_%Y.xml'); header('Content-Disposition: attachment;filename=' . $name); header('Content-Type: text/xml'); echo $dom->saveXML(); ?>
<?php // We'll be outputting a PDF header('Content-type: text/xml'); // It will be called downloaded.pdf header('Content-Disposition: attachment; filename="my xml file.xml"'); // The PDF source is in original.pdf readfile('saved.xml'); // or otherwise print your xml to the response stream ?>
Используйте заголовок содержимого.
Это должно работать:
header('Content-Disposition: attachment; filename=dom.xml'); header("Content-Type: application/force-download"); header('Pragma: private'); header('Cache-control: private, must-revalidate'); $dom = new DOMDocument('1.0', 'iso-8859-1'); echo $dom->saveXML();
Если вы используете сеанс, используйте следующие настройки для предотвращения проблем с IE6:
session_cache_limiter("must-revalidate"); session_start();