01/08/2009, 12:13
|
| | Fecha de Ingreso: agosto-2008
Mensajes: 97
Antigüedad: 15 años, 8 meses Puntos: 0 | |
Respuesta: Forzar descarga Cita:
Iniciado por thezzin Hola, aquí tengo un file que te puede servir Código PHP: <?php function output_file($file, $name, $mime_type=''){ if(!is_readable($file)) die('File not found or inaccessible!'); $size = filesize($file); $name = rawurldecode($name); $known_mime_types=array( "pdf" => "application/pdf", "as" => "as/plain", "html" => "text/html", "htm" => "text/html", "exe" => "application/octet-stream", "zip" => "application/zip", "doc" => "application/msword", "xls" => "application/vnd.ms-excel", "ppt" => "application/vnd.ms-powerpoint", "gif" => "image/gif", "png" => "image/png", "jpeg"=> "image/jpg", "jpg" => "image/jpg", //"php" => "text/plain" ); if($mime_type==''){ $file_extension = strtolower(substr(strrchr($file,"."),1)); if(array_key_exists($file_extension, $known_mime_types)){ $mime_type=$known_mime_types[$file_extension]; } else { $mime_type="application/force-download"; }; }; @ob_end_clean(); if(ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off'); header('Content-Type: ' . $mime_type); header('Content-Disposition: attachment; filename="'.$name.'"'); header("Content-Transfer-Encoding: binary"); header('Accept-Ranges: bytes'); header("Cache-control: private"); header('Pragma: private'); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); if(isset($_SERVER['HTTP_RANGE'])) { list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2); list($range) = explode(",",$range,2); list($range, $range_end) = explode("-", $range); $range=intval($range); if(!$range_end) { $range_end=$size-1; } else { $range_end=intval($range_end); } $new_length = $range_end-$range+1; header("HTTP/1.1 206 Partial Content"); header("Content-Length: $new_length"); header("Content-Range: bytes $range-$range_end/$size"); }else{ $new_length=$size; header("Content-Length: ".$size); } $chunksize = 1*(1024*1024); $bytes_send = 0; if ($file = fopen($file, 'r')){ if(isset($_SERVER['HTTP_RANGE'])) fseek($file, $range); while(!feof($file) && (!connection_aborted()) && ($bytes_send<$new_length) ) { $buffer = fread($file, $chunksize); print($buffer); //echo($buffer); // is also possible flush(); $bytes_send += strlen($buffer); } fclose($file); }else die('Error - can not open file.'); die(); } set_time_limit(0); //Edita la Ruta donde se encuentra los files $file_path = 'C:/www/htdocs/upload/zip/'.$myZipRAR; output_file($file_path, $myZipRAR);//.'.zip'); ?> y para usarlo seria así Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Forzar Descarga</title> </head> <body> <div align="center"> <p> </p> <p> </p> <p> </p> <p> <a href="<?php echo $_SERVER['PHP_SELF'];?>?page=NombreFileZip_TMP">Click Aqui para Descargar</a> <br /> <a href="<?php echo $_SERVER['PHP_SELF'];?>?page=NombreFileZip_2_TMP">Click Aqui para Descargar 2</a> <br /> <a href="<?php echo $_SERVER['PHP_SELF'];?>?page=NombreFileZip_3Falso">Click Aqui para Descargar 3, un ejemplo de intento de fraude</a> <?php $rootSv = $_SERVER['DOCUMENT_ROOT']; if(isset($_GET['page'])){ $myFileZip = $_GET['page']; /* AVISO Ocultar nombre y entregar solo el file que se desee con esto se evita: ?page=index.php o ?page=confi.php NOTA esto solo es un ejemplo en, array si tienes los nombres de los file zip, rar, etc en una Base de Datos seria mejor */ $arry = array( 'NombreFileZip_TMP' => 'my_File_Zip_Con_Nombre_Real.zip', 'NombreFileZip_2_TMP' => 'my_File_Zip_Con_Nombre_Real_2.7z', ); //FIN if(isset($arry["$myFileZip"])){ $myZipRAR = $arry["$myFileZip"]; include("Forzar_Descarga.php"); }else{ echo '<br /><br /><font color="#FF3300"><b>File no Encontrado!!</b></font>'; } } ?> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> </div> </body> </html>
Tanbien lo puedes descargar de aquí: Click aquí en .zip, .7z Amigo y como aplico esto como dije no tengo mucho conocimiento en php cuales serian los valores a modificar para poder descargar mi PPS |