我已经阅读了很多关于使用php强行下载的内容,但没有一个真正回答我的问题。
我的PHP代码读取与PHP文件位于同一目录中的XML文件作为新的DOMDocument。然后它根据用户输入更改XML文件。然后我希望它强制下载已更改的XML文件作为KML文件。我怎么做?这是我得到的最接近的:
$xml = new DOMDocument;
$xml->preserveWhiteSpace = false;
$file = 'master.xml';
$file = realpath($file);
$xml->Load($file);
header('Content-Disposition: attachment;filename=output.kml');
header('Content-Type: application/vnd.google-earth.kml+xml');
$xml->save('output.kml');
readfile('output.kml');
但没有任何反应。没有文件保存在任何地方,也没有下载文件。
答案 0 :(得分:1)
考虑分割XML文件创建和文件下载,并使用file_put_contents() saveXML()将DOMDocument保存为外部文件。
...
file_put_contents('output.kml', $xml->saveXML());
$local_file = 'output.kml';
$download_file = 'download.kml';
if (file_exists($local_file)) {
header('Content-Type: application/vnd.google-earth.kml+xml');
header('Content-Disposition: attachment;filename='.$download_file);
header('Content-Length: '.filesize($local_file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_clean();
flush();
readfile($local_file);
exit;
}