Hola...
Como puedo enviar al usuario una ventana File Download, que saca los browser para descargar ficheros, para que descargue un fichero a si pc????
gracias
| |||
Usando cabeceras HTTP adecuadas y haciendo que PHP lea tu archivo de tu servidor para entregarlo al buffer de salida puedes hacer todo eso.. Se trata de usar header() + readfile() o bien echo "... tu dato" según lo que requieras hacer: generar datos para descargar o bien leer un archivo para forzar su descarga Ejemplos tienes en la función header() www.php.net/header Un saludo, |
| |||
Gracias cluster... He leido en el manual sobre los header y como lograr un download y he probado varios códigos que he encontrado en la web, pero el fichero que descargo se me agrega el encabezamiento del fichero en que estoy.
Código:
... $str = $apelli.$delimiter.$nombre.$delimiter.$sexoav.$delimiter.$especi.$delimiter. $firma1.$delimiter.$firimg.$delimiter.$firmas.$delimiter.$firnot.$delimiter. $expedi.$delimiter.$lugnac.$delimiter.$dianac.$delimiter.$mesnag.$delimiter. $anonac.$delimiter.$notnac.$delimiter.$paisav.$delimiter.$lugfal.$delimiter. $diafal.$delimiter.$mesfal.$delimiter.$anofal.$delimiter.$notfal.$delimiter. $notas1.$delimiter.$direcc.$delimiter.$ntelef.$delimiter.$emails.$delimiter. $wwwurl.$delimiter.$fechai.$delimiter.$userid.$delimiter.$catego; $fp = fopen($path.$namefile, "a+"); fwrite( $fp, $str); fclose($fp); /* header("Content-Type: text/plain"); header('Content-Disposition: attachment; filename="export.txt"'); //echo $str; readfile ($path.$filename); */ header('Content-Description: File Transfer'); header('Content-Type: application/force-download'); header('Content-Length: ' . filesize($namefile)); header('Content-Disposition: attachment; filename=' . basename($namefile)); readfile($path.$namefile); |
| |||
Cita: Que significa eso?pero el fichero que descargo se me agrega el encabezamiento del fichero en que estoy Por lo demás .. si tu en ese script compones tu contenido a entregar a descargar .. NO es necesario que crees un archivo para luego componer las cabeceras HTTP (con header()) y lo lees para entregarlo al buffer de salida (con readfile()) .. Tan sólo debes hacer: echo $str; en lugar de readfile() .. y omitir todo ese código que genera ese archivo ... A todo esto .. cuando pongas código en el foro .... "intenta" limpiarlo de tus pruebas (de código que comentes y demás .. suele confundir más que ayudar). Un saludo, |
| |||
gracias por el consejo. lo que quiero decir es que en un fichero al llamar a header('Content-Description: File Transfer'); header('Content-Type: application/force-download'); echo $str; me download todo el encabezamiento del fichero de donde ejecuto esa instrucción. por ejemplo los <script..><title...>, ect. y yo solo necesito que me download el contenido de $str |
| |||
Es que en ese script que va hacer ese "download" no tiene por qué exister más HTML por médio .. no tiene sentido .. ese script hay que llamarlo por separado no como parte de un script PHP que origine X salida (ese HTML que mencionas) + tu $str. Podrías usar el control del buffer de PHP (funciones: ob_start() y afines) pero no es la idea. Un saludo, |