Имеется XML-файл, лежащий в папке files.
По нажатию на кнопку он "собирается" и должен скачиваться.
Как можно это реализовать серез header (или иным способом), чтобы при сохранение не обнавлялась страница?
если вы знаете про функцию header, то это уже хорошо. но не поленитесь прочитать документацию к ней:
Если нужно предупредить пользователя о необходимости сохранить пересылаемые данные, такие как сгенерированный PDF-файл, можно воспользоваться заголовком » Content-Disposition, который подставляет рекомендуемое имя файла и заставляет браузер показать диалог загрузки.
Пример #1 Диалог загрузки
// Будем передавать PDF
header('Content-Type: application/pdf');
// Он будет называться downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// Исходный PDF-файл original.pdf
readfile('original.pdf');
в вашем случае mime-type следует указать text/xml или application/xml, ну и если файл собирается динамически, то вывести его через echo/print:
$xml = new SimpleXMLElement("<root></root>");
// формируем xml
// ....
// сохраняем в файл
$xml->asXML("/path/to/your/file.xml");
// отправляем заголовки для скачивания
header('Content-Type: application/xml');
header('Content-Disposition: attachment; filename="myfile.xml"');
// скидываем сам файл
print $xml->asXML();
Сборка персонального компьютера от Artline: умный выбор для современных пользователей