如何使用php创建XML文件并提示下载?

时间:2009-11-07 17:37:25

标签: php domdocument

我正在使用domdocument创建一个xml文件:

$dom = new DOMDocument('1.0', 'iso-8859-1');
echo $dom->saveXML();

当我点击此文件的链接时,它只是将其显示为xml文件。我如何提示下载呢?此外,如何提示将其下载为“backup_11_7_09.xml”(插入今天的日期并将其作为xml)而不是php文件的真实姓名,即“backup.php”

3 个答案:

答案 0 :(得分:8)

在回显之前将Content-Disposition标题设置为附件:

<?  header('Content-Disposition: attachment;filename=myfile.xml'); ?>

当然,您可以使用strftime()格式化myfile.xml以获取文件名中的格式化日期:

<?
    $name = strftime('backup_%m_%d_%Y.xml');
    header('Content-Disposition: attachment;filename=' . $name);
    header('Content-Type: text/xml');

    echo $dom->saveXML();
?>

答案 1 :(得分:2)

<?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
?>

使用content-disposition标头。

答案 2 :(得分:2)

这应该有效:

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();