servidor para link hacer funciona descargar descarga como codigo boton automaticamente atributo archivos archivo php createfile force-download

link - PHP crea un archivo para descargar sin guardar en el servidor



html boton descargar archivo (2)

En lugar de guardarlo en un archivo, simplemente haga echo él después de enviar los encabezados.

Objetivo final: quiero crear una página web donde un usuario pueda ingresar información en formularios. Con esa información, quiero crear un archivo html (a continuación, llamado test-download.html) insertando la información proporcionada en una plantilla y luego forzar una descarga. Como quiero demostrar esto en un próximo taller donde las personas lo usarán al mismo tiempo, me gustaría no guardar el archivo en el servidor y simplemente forzar la descarga.

Hasta ahora: tengo esto en mi archivo html (test.html):

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

y esto en mi 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); ?>

Esto sobrescribe el archivo test-download.html y obliga a una descarga.

Pregunta: ¿Cómo puedo hacer esto sin meterme con un archivo (el test-download.html) en el servidor?


Tenga en cuenta que casi todas las veces que un script PHP responde a una solicitud, se trata de "generar un archivo" que el navegador descarga. Cualquier cosa que echo , print , print , o de otra manera ponga a salida estándar es el contenido de ese "archivo".

Todo lo que tiene que hacer es decirle al navegador que el "archivo" debe manejarse de manera diferente, y los encabezados que está imprimiendo ya deberían hacer eso. Una vez que se envían los encabezados, todo lo que imprima se convierte en el contenido de la descarga.