tigroid3
@tigroid3
PHP, YII2, SQL, Postgres, Docker, SPHINX, GIT

Как сгенерировать файл XML и сразу скачать его не сохраняя?

Есть такой пример, который генерирует xml, сохраняет её а потом загружает.
$dom = new DomDocument('1.0');
$books = $dom->appendChild($dom->createElement('books'));
$book = $books->appendChild($dom->createElement('book'));
$title = $book->appendChild($dom->createElement('title'));
$title->appendChild(
$dom->createTextNode('Great American Novel'));
$dom->formatOutput = true; // установка атрибута formatOutput
$dom->save('test1.xml');
header('Content-type: text/xml');
header('Content-Disposition: attachment; filename="test1.xml"');

Как сделать так, чтобы файл не сохранялся, а сразу после генерации происходила загрузка. Возможно это?
  • Вопрос задан
  • 422 просмотра
Решения вопроса 1
CyberHost
@CyberHost
$dom = new DomDocument('1.0');
$books = $dom->appendChild($dom->createElement('books'));
$book = $books->appendChild($dom->createElement('book'));
$title = $book->appendChild($dom->createElement('title'));
$title->appendChild(
$dom->createTextNode('Great American Novel'));
$dom->formatOutput = true; // установка атрибута formatOutput

header('Content-Type: application/octet-stream');
echo $dom->saveXML();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
pingo
@pingo
function forceDownload($xml)
    {
    
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Cache-Control: private", false);
        header("Content-Type: application/xml");
        header("Content-Disposition: attachment; filename=" . basename($xml) . ";");
        header("Content-Transfer-Encoding: binary");
        header("Content-Length: " . filesize($xml));
        readfile($xml);
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы