Forzar descarga en PHP

Ha veces nos ha pasado que hemos colocado en nuestra web un archivo para bajar, pero este se abría por defecto en el navegador, o con algún programa predeterminado que teníamos instalado. Para forzar su descarga y evitar así esta tediosa situación para alguno de nuestros usuarios, podemos usar el siguiente script en PHP:

<?php
    $extensiones = array("rar", "zip", "jpg", "gif"); // extensiones que permitiremos
    $f = $_GET["f"];
    if(strpos($f,"/")!==false){
        die("No puedes navegar por otros directorios");
    }
    $ftmp = explode(".",$f);
    $fExt = strtolower($ftmp[count($ftmp)-1]);
 
    if(!in_array($fExt,$extensiones)){
        die("<b>ERROR!</b> no es posible descargar archivos con la extensión $fExt");
    }
 
    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment; filename=\"$f\"\n");
    $fp=fopen("$f", "r");
    fpassthru($fp);
?>

Por ejemplo, si este script lo llamamos “bajar.php”, pues un link de ejemplo seria:

http://miweb.com/bajar.php?f=miarchivo.rar

Leave a Reply

You must be logged in to post a comment.