Descarga de Contenido MIME Específico desde Internet
Objetivo:
Permitir a una aplicación la descarga de un archivo desde el servidor que contenga automáticamente la información que el usuario haya puesto en un formulario sin recurrir a descarga con elementos html <a href='...'>..</a> .
Por ejemplo, un formulario web pide nombre y cedula, y presenta un botón "Generar Informe", al darle clic se genera una lista de registros (de lo que sea) asociados al cliente y ahora queremos que este informe se descargue automáticamente sin crear etiquetas html <a href='...'>...</a>, queremos que aparezca la clásica ventanita de descarga del explorador de internet.
Para resolver esto se crea un script, en resumidas cuentas y a modo de ejemplo: generareporte.php, el cual recibe los parametros seleccionados en el formulario web y genera un informe en formato CSV que automaticamente se descargará al usuario.
voy a obviar el formulario html por este momento, y me enfocaré en el script php:
--inicio archivo generareporte.php--
$cedula = $_GET['cedula'];
$nombre = $_GET['nombre'];
// generamos un nombre de archivo cualquiera
$fnameOnly=$cedula.".reporte.dat";
// se crea la ruta completa del archivo donde se guardara el archivo localmente
$localfile = "d:/descargasLocalpermisoWrite/".$fnameOnly;
if($localfile != null
{
// se crea el archivo local
$f = fopen($localfile,"w");
fwrite($f,"registro de prueba;registro de prueba;registro de prueba;");
fclose($f);
// se prepara el encabezado del documento a descargar
header('Content-disposition: attachment; filename='.$localfile);
header('Content-type: text/html');
readfile($localfile);
}
--fin archivo generareporte.php--
--inicio archivo reporte.html---
<body>
<h3>Descarga Reporte</h3><hr/>
<!-- obviare aqui el desarrollo de un formulario que pida usuario y clave -->
<a href='/generarreporte.php?cedula=8181818&nombre=juan'
target='_blank'>generar reporte</a>
</body>
--fin archivo--
al hacer click en el enlace "generar reporte" se descargará automáticamente un informe en formato CSV.
No hay comentarios:
Publicar un comentario