jueves, 14 de junio de 2012

Descarga de archivos servidor


Para permitir el download de archivos del servidor en una determinada carpeta, es útil el siguiente script llamado download.php ... 

Para el ejemplo imagina que tienes una carpeta en el servidor en el cual tienes archivos que quieres que puedan ser descargados por los visitantes o usuarios. A esta carpeta la llamaremos "descargas" en la cual existe un fichero .rar llamado "ejemplo.rar"

Por otro lado tienes una página php en la cual existe un enlace para que los usuarios se puedan descargar el archivo ejemplo.rar, en esta parte entra en acción el script download.php 

<a href="download.php?file=ejemplo.rar"> ejemplo.rar </a>
 
En el archivo download.php únicamente tienes que poner el root del directorio donde se encuentran los archivos de descarga ... 

En el ejemplo bastaría con poner en la variable $root lo siguiente ...
 $root = "descargas/"; 

Una vez hecho esto bastará con hacer click en el enlace y ... 

Descarga de Archivos con PHP


download.php ...

<?php
/* By http://php-estudios.blogspot.com */

// File: download.php
    if (!isset($_GET['file']) || empty($_GET['file'])) {
        exit();
    }
	
 //Carperta dónde se encuentran los archivos de descarga
    $root = "descargas/";
 
    $file = basename($_GET['file']);
    $path = $root.$file;
    $type = '';
     
    if (is_file($path)) {
        $size = filesize($path);
        if (function_exists('mime_content_type')) {
            $type = mime_content_type($path);
        } else if (function_exists('finfo_file')) {
            $info = finfo_open(FILEINFO_MIME);
            $type = finfo_file($info, $path);
            finfo_close($info); 
        }
        if ($type == '') {
            $type = "application/force-download";
        }
        // Poner cabeceras
        header("Content-Type: $type");
        header("Content-Disposition: attachment; filename=$file");
        header("Content-Transfer-Encoding: binary");
        header("Content-Length: " . $size);
        // Descargar el archivo
        readfile($path);
    } else {
        die("¡El archivo no existe!");
    }
?>




No hay comentarios: