PHP创建文件下载,无需保存在服务器上
收藏

最终目标:我想创建一个网页,用户可以在其中输入表单信息。有了这些信息,我想通过将给定的信息插入模板中,然后强制进行下载,来创建一个html文件(以下称为test-download.html)。由于我想在即将到来的研讨会上进行演示,人们将在同一时间使用该研讨会,因此我不想将文件保存在服务器上,而只是强制下载。

到目前为止:我的html文件(test.html)中有这个:

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

而这在我的test.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并强制进行下载。

问题:如何做到这一点而又不会弄乱服务器上的文件(test-download.html)?

最佳答案

Instead of saving it to a file, just echo it after you send the headers.

    公众号
    关注公众号订阅更多技术干货!