Я прочитал много вещей о принудительной загрузке с помощью php, но ни один из них не отвечает на мой вопрос.
Мой код PHP читает файл XML, расположенный в том же каталоге, что и файл PHP, в качестве нового документа 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');
Но ничего не происходит. Файл не сохраняется нигде, и файл не загружается.
Рассмотрите возможность сегментирования создания файла 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;
}
Других решений пока нет …