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