Return to Snippet

Revision: 2190
at January 12, 2007 11:34 by nicolaspar


Initial Code
<?
function descarga($archivo,$velocidad,$respeta_extension = true) {
// Si el archivo que solicitamos no existe...
if (!file_exists($archivo)) {
    return false;
};

// Sacamos las variables del archivo
$tamano = filesize($archivo);
$extension = substr(strrchr($archivo,"."),1);

// Comprobamos la extension... si la puede descargar y el tipo de archivo
switch ($extension) {
    break;
        case "php": case "php3": case "php4": case "php5": case "htm": case "html": case "txt": case "phtml":
        return false;
    break;
    default:
        if ($respetar_extension) {
            $contenido="application/".$extension;
        } else {
            $contenido = mime_content_type($archivo);
        }
    break;
}

@ob_end_clean(); // Limpiamos el buffer de salida

// Enviamos las cabeceras
header("Content-Length: " . $tamano);
header("Content-Disposition: attachment; filename=\"$archivo\"");
header("Content-Type: " . $contenido);

// Empezamos a leer el archivo para enviarlo...
$lee_archivo = fopen($archivo, "r"); // "rb" -> Windows ## "r" -> Linux

    while(!feof($lee_archivo) && connection_status()==0) {
        if ($velocidad != 0) {
            echo fread($lee_archivo, 1024 * $velocidad);    // Usa $velocidad kb buffer de salida (limitada)
            sleep(1);                                        // Paramos un segundo para limitar la velocidad
        } else {
            echo fread($lee_archivo,1024*6);                 // Usa 6Kb buffer de salida
        }
        flush(); // Vacia el buffer de salida...
    }
// Cerramos el archivo
fclose($lee_archivo);
return !connection_aborted();
}

//// Aqui para descargar....
// En qu?arpeta tenemos las descargas:
$ruta_descargas = "./descargas/";
$archivo = "archivo.gif.jpg"; // Realmente es un gif, pero la extension es JPG
// La velocidad de descarga que queremos que tengan los usuarios en KB/seg
$velocidad = 0; // KB/seg ## 0 para Ilimitada
$archivo = $ruta_descargas.$archivo;
// Ejemplos................................................................
descarga($archivo,$velocidad); // Descargamos el archivo JPG
descarga($archivo,$velocidad,true); // Descargamos el archivo GIF
?>

Initial URL


Initial Description


Initial Title
PHP - AntiLeecher

Initial Tags


Initial Language
PHP