descargar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?
// Funci?ntileecher v1.0e
// By Pyronhell (pyronhell@pyronhell.net / pyronhell.net)

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
?>
PHP-Hispano.net - Porque al final, todos acabamos aprendiendo.