El blog de Javier Aranda

aprendiendo a ser ingeniero informático

Archivo para la etiqueta ‘archivos’

Forzar la descarga de un archivo en php

0 comentarios ¡escriba uno!

Recupero una entrada que publiqué en mi antiguo blog para forzar la descarga de un archivo en php.

/**
 * Forzar la descarga de un archivo en PHP
 *
 * @author Javier Aranda 
 * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero GPL 3
 */

$archivo = '/home/usuario/mi_archivo.pdf';

//Cabeceras HTTP para forzar la descarga (varia según el navegador)
if(isset($_SERVER['HTTP_USER_AGENT']) AND strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE'))
{
   header('Content-Type: application/force-download');
}
else
{
   header('Content-Type: application/octet-stream');
}

//Calculamos el tamaño del archivo
$tamano = filesize($archivo);

//Envío cabecera con el tamaño del archivo
header('Content-Length: '.$tamano);

//Envío cabecera con el nombre del archivo
header('Content-disposition: attachment; filename=' . basename($archivo));

header('Pragma: no-cache'); //Cabecera anti-cache
header('Expires: 0'); //Cabecera que define la duración

//Esta función lee un archivo y lo vuelca a la salida (ver manual PHP)
readfile($archivo);

Nota: por fallos en el resaltador de sintaxis aparece un cierre de la etiqueta http inexistente. Reportaré el fallo.

Escrito por javierav

8 Agosto 2009 a las 2:11 pm

Categoría: PHP

Etiquetado con , , ,