![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
01/08/2009, 12:13
|
| | Fecha de Ingreso: agosto-2008
Mensajes: 97
Antigüedad: 16 años, 5 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 |