Попробуйте использовать следующее, чтобы заставить браузер, чтобы показать «Сохранить как ...» Диалог: браузер показывает диалоговое окно «Сохранить как ...» для типов содержимого, которое не знает, как интерпретировать/отображать или когда оно указано в заголовках. Просто знайте правильные заголовки, и вы можете указать, чтобы загрузить его, имя файла по умолчанию, тип контента и как его следует кэшировать.
<?php
$xml = '<?xml version="1.0" encoding="UTF-8" ?>';
$xml .= "\n <data>";
// Create the rest of your XML Data...
$xml .= "\n </data>";
downloader($xml, 'yourFile.xml', 'application/xml');
Код функции:
<?php
if(!function_exists('downloader'))
{
function downloader($data, $filename = true, $content = 'application/x-octet-stream')
{
// If headers have already been sent, there is no point for this function.
if(headers_sent()) return false;
// If $filename is set to true (or left as default), treat $data as a filepath.
if($filename === true)
{
if(!file_exists($data)) return false;
$data = file_get_contents($data);
}
if(strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== false)
{
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Transfer-Encoding: binary');
header('Content-Type: '.$content);
header('Pragma: public');
header('Content-Length: '.strlen($data));
}
else
{
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Transfer-Encoding: binary');
header('Content-Type: '.$content);
header('Expires: 0');
header('Pragma: no-cache');
header('Content-Length: '.strlen($data));
}
// Send file to browser, and terminate script to prevent corruption of data.
exit($data);
}
}
Определенно не ответ на ваш вопрос, но я бы рекомендовал использовать некоторые библиотеки/класс для генерации XML вместо построения его «вручную» (например, SimpleXML - используется довольно часто в коде Drupal или DOMDocument, если у вас более сложные потребности). Это экономит массу работы. –
@headkit: Если вы написали модуль для этого. Можете ли вы дать мне код. Если вы ответите мне, я дам по почте id. Спасибо – Cindrella
не был создан модуль, извините. – headkit