lunes, 4 de abril de 2011

Cómo descargar contenido desde un servidor web con PHP y control de contenidos MIME

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