В PHP создать файл для скачивания без сохранения на сервере

конечная цель: Я хочу создать веб-страницу, где пользователь может вводить информацию в формы. С этой информацией я хочу создать html-файл (ниже называется test-download.html), вставив информацию, указанную в шаблон,а затем принудительно загрузить. Поскольку я хочу продемонстрировать это на предстоящем семинаре, где люди будут использовать это "одновременно", я хотел бы не сохранять файл на сервере и просто принудительно загружать.

Так далеко: у меня есть это в моем HTML-файл (тест.HTML-код):

<form action="test.php" method="post">
To file: <input type="text" name="tofile" />
<input type="submit" />
</form>

и это в моем тесте.на PHP:

<?php
$filename = 'test-download.html';
$htmlcode1 = "<HTML> n <BODY>";
$htmlcode2 = "</BODY> n <HTML>";
$somecontent = $htmlcode1.$_POST["tofile"].$htmlcode2;
!$handle = fopen($filename, 'w');
fwrite($handle, $somecontent);
fclose($handle);


header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Length: ". filesize("$filename").";");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/octet-stream; "); 
header("Content-Transfer-Encoding: binary");

readfile($filename);

?>

это перезаписывает файл test-download.html-файл и заставляет загрузку.

вопрос: как я могу это сделать, не возясь с файлом (тест-загрузка.html) на сервере?

2 ответов


вместо сохранения его в файл, просто echo Это после отправки заголовков.


поймите, что почти каждый раз, когда PHP-скрипт отвечает на запрос, он" генерирует файл", который загружается браузером. Все, что угодно!--0-->, print, printf, или иным образом вывести на стандартный вывод содержимое этого "файла".

все, что вам нужно сделать, это сказать браузеру, что "файл" должен обрабатываться по-другому-и заголовки, которые вы выводите, уже должны это сделать. После отправки заголовков все, что вы распечатываете, становится содержимым скачать.