Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP create file for download without saving on server

Ultimate goal: I want to create a webpage where a user can enter information in forms. With that information I want to create a html file (below called test-download.html) by inserting the information given into a template and then force a download. Since I want to demonstrate this at an upcoming workshop where people will be using this at the "same time" I would like to not save the file on the server and just force the download.

So far: I have this in my html file (test.html):

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

and this in my 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);  ?> 

This overwrites the file test-download.html file and forces a download.

Question: How can I do this without messing with a file (the test-download.html) on the server?

like image 847
Thomas Avatar asked Apr 06 '11 00:04

Thomas


1 Answers

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

like image 151
alex Avatar answered Sep 30 '22 23:09

alex