Tema: descargas
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/02/2009, 14:01
Avatar de aRTeX
aRTeX
 
Fecha de Ingreso: mayo-2005
Mensajes: 374
Antigüedad: 21 años, 4 meses
Puntos: 0
descargas

miren encontre este script para descargar.

se ve super bueno pero no cacho como funciona.

Código PHP:
<?php

$logFile
='archivos.txt';

$downPath='Informes/BCP/HojadeRuta';

date_default_timezone_set('America/Argentina/Buenos_Aires');

$inicio=time();

function 
getParam(&$arr,$name)
{
    if(isset(
$arr[$name]))
        return 
$arr[$name];
    return 
'';
}

function 
testCache($md5,$gmt_mtime)
{
        if(isset(
$_SERVER['HTTP_IF_MODIFIED_SINCE'])
        && 
$_SERVER['HTTP_IF_MODIFIED_SINCE'] == $gmt_mtime)
            return 
true;
        if (isset(
$_SERVER['HTTP_IF_NONE_MATCH'])
        && 
str_replace('"', '', stripslashes($_SERVER['HTTP_IF_NONE_MATCH'])) == $md5)
            return 
true;
        return 
false;
}

function 
writeLog($texto)
{
    global 
$logFile;
    
$hora=strftime('[%d-%b-%Y %T]');
  if (
$handle = @fopen($logFile, 'ab'))
      
fwrite($handle,$hora . ' ' . $texto);
}


set_magic_quotes_runtime(0);

$agente=getParam($_SERVER,'HTTP_USER_AGENT');

$referer=getParam($_SERVER,'HTTP_REFERER');

$ip=$_SERVER['REMOTE_ADDR'];

$file=getParam($_SERVER,'REQUEST_URI');
$displayname=substr($file,1);
$file=$downPath . $file;
if(!
$displayname || !file_exists($file) || !($len=filesize($file)))
{
    if(
$displayname)
        
writeLog("$displayname:\nAgente: $agente\nReferencia: $referer\nIP $ip - RESPUESTA 404 (No encontrado).\n\n");
    
header('HTTP/1.0 404 No encontrado');
    exit;
}


$mtime=filemtime($file);
$gmt_mtime = gmdate('D, d M Y H:i:s', $mtime).' GMT';

$md5=md5($file.$len.$mtime);

if(
testCache($md5,$gmt_mtime))
{
        
writeLog("$displayname:\nAgente: $agente\nReferencia: $referer\nIP $ip - $len bytes - RESPUESTA 304 (No modificado).\n\n");
        
header('HTTP/1.1 304 No modificado');
        exit;
}

$fp = @fopen($file, 'rb');
if(!
$fp)
{
    
writeLog("$displayname:\nAgente: $agente\nReferencia: $referer\nIP $ip - $len bytes - RESPUESTA 500 (Error de servidor).\n\n");
    
header( 'HTTP/1.1 500 Error de servidor' );
    exit;
}
$ext=strrpos($displayname,'.');
if(
$ext===false)
    
$ctype='application/force-download';
else
{
    switch(
strtolower(substr($displayname,++$ext))) {
            case 
'ez': $ctype='application/andrew-inset'; break;
            case 
'atom': $ctype='application/atom+xml'; break;
            case 
'hqx': $ctype='application/mac-binhex40'; break;
            case 
'cpt': $ctype='application/mac-compactpro'; break;
            case 
'mathml': $ctype='application/mathml+xml'; break;
            case 
'doc': $ctype='application/msword'; break;
            case 
'bin':
            case 
'class':
            case 
'dll':
            case 
'dmg':
            case 
'dms':
            case 
'exe':
            case 
'lha':
            case 
'lzh':
            case 
'rar':
            case 
'so': $ctype='application/octet-stream'; break;
            case 
'oda': $ctype='application/oda'; break;
            case 
'ogg': $ctype='application/ogg'; break;
            case 
'pdf': $ctype='application/pdf'; break;
            case 
'ai':
            case 
'eps':
            case 
'ps': $ctype='application/postscript'; break;
            case 
'rdf': $ctype='application/rdf+xml'; break;
            case 
'smi':
            case 
'smil': $ctype='application/smil'; break;
            case 
'grxml': $ctype='application/srgs+xml'; break;
            case 
'gram': $ctype='application/srgs'; break;
            case 
'mif': $ctype='application/vnd.mif'; break;
            case 
'xul': $ctype='application/vnd.mozilla.xul+xml'; break;
            case 
'xls': $ctype='application/vnd.ms-excel'; break;
            case 
'ppt': $ctype='application/vnd.ms-powerpoint'; break;
            case 
'rm': $ctype='application/vnd.rn-realmedia'; break;
            case 
'wbxml': $ctype='application/vnd.wap.wbxml'; break;
            case 
'wmlc': $ctype='application/vnd.wap.wmlc'; break;
            case 
'wmlsc': $ctype='application/vnd.wap.wmlscriptc'; break;
            case 
'vxml': $ctype='application/voicexml+xml'; break;
            case 
'bcpio': $ctype='application/x-bcpio'; break;
            case 
'vcd': $ctype='application/x-cdlink'; break;
            case 
'pgn': $ctype='application/x-chess-pgn'; break;
            case 
'cpio': $ctype='application/x-cpio'; break;
            case 
'csh': $ctype='application/x-csh'; break;
            case 
'dcr':
            case 
'dir':
            case 
'dxr': $ctype='application/x-director'; break;
            case 
'dvi': $ctype='application/x-dvi'; break;
            case 
'spl': $ctype='application/x-futuresplash'; break;
            case 
'gtar': $ctype='application/x-gtar'; break;
            case 
'hdf': $ctype='application/x-hdf'; break;
            case 
'phps': $ctype='application/x-httpd-php-source'; break;
            case 
'php':
            case 
'php3':
            case 
'php4':
            case 
'phtml': $ctype='application/x-httpd-php'; break;
            case 
'js': $ctype='application/x-javascript'; break;
            case 
'skd':
            case 
'skm':
            case 
'skp':
            case 
'skt': $ctype='application/x-koan'; break;
            case 
'latex': $ctype='application/x-latex'; break;
            case 
'cdf':
            case 
'nc': $ctype='application/x-netcdf'; break;
            case 
'crl': $ctype='application/x-pkcs7-crl'; break;
            case 
'shar': $ctype='application/x-shar'; break;
            case 
'swf': $ctype='application/x-shockwave-flash'; break;
            case 
'sh': $ctype='application/x-sh'; break;
            case 
'sit': $ctype='application/x-stuffit'; break;
            case 
'sv4cpio': $ctype='application/x-sv4cpio'; break;
            case 
'sv4crc': $ctype='application/x-sv4crc'; break;
            case 
'tar':
            case 
'tgz': $ctype='application/x-tar'; break;
            case 
'tcl': $ctype='application/x-tcl'; break;
            case 
'texi':
            case 
'texinfo': $ctype='application/x-texinfo'; break;
            case 
'tex': $ctype='application/x-tex'; break;
            case 
'man': $ctype='application/x-troff-man'; break;
            case 
'me': $ctype='application/x-troff-me'; break;
            case 
'ms': $ctype='application/x-troff-ms'; break;
            case 
'roff':
            case 
't':
            case 
'tr': $ctype='application/x-troff'; break;
            case 
'ustar': $ctype='application/x-ustar'; break;
            case 
'src': $ctype='application/x-wais-source'; break;
            case 
'crt': $ctype='application/x-x509-ca-cert'; break;
            case 
'xht':
            case 
'xhtml': $ctype='application/xhtml+xml'; break;
            case 
'dtd': $ctype='application/xml-dtd'; break;
            case 
'xml':
            case 
'xsl': $ctype='application/xml'; break;
            case 
'xslt': $ctype='application/xslt+xml'; break;
            case 
'zip': $ctype='application/zip'; break;
            case 
'au':
            case 
'snd': $ctype='audio/basic'; break;
            case 
'kar':
            case 
'mid':
            case 
'midi': $ctype='audio/midi'; break;
            case 
'mp2':
            case 
'mp3':
            case 
'mpga': $ctype='audio/mpeg'; break;
            case 
'aif':
            case 
'aifc':
            case 
'aiff': $ctype='audio/x-aiff'; break;
            case 
'm3u': $ctype='audio/x-mpegurl'; break;
            case 
'ra':
            case 
'ram': $ctype='audio/x-pn-realaudio'; break;
            case 
'wav': $ctype='audio/x-wav'; break;
            case 
'pdb': $ctype='chemical/x-pdb'; break;
            case 
'xyz': $ctype='chemical/x-xyz'; break;
            case 
'bmp': $ctype='image/bmp'; break;
            case 
'cgm': $ctype='image/cgm'; break;
            case 
'gif': $ctype='image/gif'; break;
            case 
'ief': $ctype='image/ief'; break;
            case 
'jpe':
            case 
'jpeg':
            case 
'jpg': $ctype='image/jpeg'; break;
            case 
'png': $ctype='image/png'; break;
            case 
'svg': $ctype='image/svg+xml'; break;
            case 
'tif':
            case 
'tiff': $ctype='image/tiff'; break;
            case 
'djv':
            case 
'djvu': $ctype='image/vnd.djvu'; break;
            case 
'wbmp': $ctype='image/vnd.wap.wbmp'; break;
            case 
'ras': $ctype='image/x-cmu-raster'; break;
            case 
'ico': $ctype='image/x-icon'; break;
            case 
'pnm': $ctype='image/x-portable-anymap'; break;
            case 
'pbm': $ctype='image/x-portable-bitmap'; break;
            case 
'pgm': $ctype='image/x-portable-graymap'; break;
            case 
'ppm': $ctype='image/x-portable-pixmap'; break;
            case 
'rgb': $ctype='image/x-rgb'; break;
            case 
'xbm': $ctype='image/x-xbitmap'; break;
            case 
'xpm': $ctype='image/x-xpixmap'; break;
            case 
'xwd': $ctype='image/x-xwindowdump'; break;
            case 
'iges':
            case 
'igs': $ctype='model/iges'; break;
            case 
'mesh':
            case 
'msh':
            case 
'silo': $ctype='model/mesh'; break;
            case 
'vrml':
            case 
'wrl': $ctype='model/vrml'; break;
            case 
'ics':
            case 
'ifb': $ctype='text/calendar'; break;
            case 
'css': $ctype='text/css'; break;
            case 
'htm':
            case 
'html':
            case 
'shtml': $ctype='text/html'; break;
            case 
'asc':
            case 
'log':
            case 
'txt': $ctype='text/plain'; break;
            case 
'rtx': $ctype='text/richtext'; break;
            case 
'rtf': $ctype='text/rtf'; break;
            case 
'sgm':
            case 
'sgml': $ctype='text/sgml'; break;
            case 
'tsv': $ctype='text/tab-separated-values'; break;
            case 
'wmls': $ctype='text/vnd.wap.wmlscript'; break;
            case 
'wml': $ctype='text/vnd.wap.wml'; break;
            case 
'etx': $ctype='text/x-setext'; break;
            case 
'mpe':
            case 
'mpeg':
            case 
'mpg': $ctype='video/mpeg'; break;
            case 
'mov':
            case 
'qt': $ctype='video/quicktime'; break;
            case 
'm4u':
            case 
'mxu': $ctype='video/vnd.mpegurl'; break;
            case 
'avi': $ctype='video/x-msvideo'; break;
            case 
'movie': $ctype='video/x-sgi-movie'; break;
            case 
'ice': $ctype='x-conference/x-cooltalk'; break;
        default: 
$ctype='application/force-download'; break;
    }
}


@
set_time_limit(0);

header('Last-Modified: '.$gmt_mtime);
header('ETag: "'.$md5.'"');
header('Content-Length: ' . $len);
header('Content-Type: ' . $ctype);

while(!
feof($fp)) {
    echo 
fread($fp, 524288);
    
flush();
}

$tiempo=time()-$inicio;
$bytesSeg=number_format(($tiempo?($len/$tiempo):$len)/1024,2,',','');
writeLog("$displayname:\nAgente: $agente\nReferencia: $referer\nIP $ip - $len bytes - $tiempo segs. ($bytesSeg KB/seg).\n\n");
?>
no se si lo conocen, tambien viene un .htaccess

que es este.

Código:
Options All -Indexes

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{DOCUMENT_ROOT}/Informes/BCP/HojadeRuta%{REQUEST_URI} -f

RewriteRule (.*) descargas.php

me pueden ayudar para saber como utilizarlo?? lo pruebo en mi servidor de mi PC, donde no tengo subdominios.-