Ver Mensaje Individual
  #11 (permalink)  
Antiguo 01/08/2009, 12:13
anpefe
 
Fecha de Ingreso: agosto-2008
Mensajes: 97
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Forzar descarga

Cita:
Iniciado por thezzin Ver Mensaje
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>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</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>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</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