Foros del Web » Programando para Internet » PHP »

Forzar descarga

Estas en el tema de Forzar descarga en el foro de PHP en Foros del Web. Buenas a todos, acudo a ustedes para que me ayuden o me indiquen algún script php para forzar una descarga de un PPS (PowerPoint) ya ...
  #1 (permalink)  
Antiguo 27/07/2009, 16:33
 
Fecha de Ingreso: agosto-2008
Mensajes: 97
Antigüedad: 15 años, 8 meses
Puntos: 0
Forzar descarga

Buenas a todos, acudo a ustedes para que me ayuden o me indiquen algún script php para forzar una descarga de un PPS (PowerPoint) ya intente con varios script que encontré por google y no me funcionaron creo que el problema debe de ser mío ya que no tengo mucho conocimiento en PHP. Les agradezco la ayuda que me puedan brindar
  #2 (permalink)  
Antiguo 27/07/2009, 17:14
 
Fecha de Ingreso: mayo-2009
Mensajes: 210
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Forzar descarga

yo uso esto

Código php:
Ver original
  1. if (file_exists($file)) {
  2.     header('Content-Description: File Transfer');
  3.     header('Content-Type: application/octet-stream');
  4.     header('Content-Disposition: attachment; filename='.basename($file));
  5.     header('Content-Transfer-Encoding: binary');
  6.     header('Expires: 0');
  7.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  8.     header('Pragma: public');
  9.     header('Content-Length: ' . filesize($file));
  10.     ob_clean();
  11.     flush();
  12.     readfile($file);
  13.     exit;
  14. }

no se si habra casos en que no sirve, proba
  #3 (permalink)  
Antiguo 29/07/2009, 20:54
 
Fecha de Ingreso: agosto-2008
Mensajes: 97
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Forzar descarga

Cita:
Iniciado por horape Ver Mensaje
yo uso esto

Código php:
Ver original
  1. if (file_exists($file)) {
  2.     header('Content-Description: File Transfer');
  3.     header('Content-Type: application/octet-stream');
  4.     header('Content-Disposition: attachment; filename='.basename($file));
  5.     header('Content-Transfer-Encoding: binary');
  6.     header('Expires: 0');
  7.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  8.     header('Pragma: public');
  9.     header('Content-Length: ' . filesize($file));
  10.     ob_clean();
  11.     flush();
  12.     readfile($file);
  13.     exit;
  14. }

no se si habra casos en que no sirve, proba
No tengo mucho conocimiento en php en este script se copia tal como esta o hay que configurarlo y como colocaría el enlace al php para forzar la descarga del PowerPoint, te agradecería que lo explicara paso a paso, como ya dije no tengo mucho conocimiento en php
  #4 (permalink)  
Antiguo 29/07/2009, 21:10
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Forzar descarga

Pasate por el manual de php
http://gt.php.net/manual/en/book.curl.php

Alli esta como poner en practica algunos elementos para que veas como funcionan los sockets.
  #5 (permalink)  
Antiguo 30/07/2009, 12:03
 
Fecha de Ingreso: agosto-2008
Mensajes: 97
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Forzar descarga

Cita:
Iniciado por bacdavi Ver Mensaje
Pasate por el manual de php
http://gt.php.net/manual/en/book.curl.php

Alli esta como poner en practica algunos elementos para que veas como funcionan los sockets.
No encontré la ayuda que necesito
  #6 (permalink)  
Antiguo 30/07/2009, 12:09
 
Fecha de Ingreso: febrero-2009
Mensajes: 53
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Forzar descarga

Vos queres descargar desde una web un power point a tu servidor? o queres que los usuarios de tu web bajen un power point?
  #7 (permalink)  
Antiguo 30/07/2009, 16:49
 
Fecha de Ingreso: agosto-2008
Mensajes: 97
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Forzar descarga

Cita:
Iniciado por sheerrmaan Ver Mensaje
Vos queres descargar desde una web un power point a tu servidor? o queres que los usuarios de tu web bajen un power point?
Lo que quiero es que los usuarios de mi web descarguen un PowerPoint, desde un enlace quiero forzar la descarga para evitar que lo haga desde el navegador ya que si le das abrir lo hace desde el navegador en vez de PowerPoint.
  #8 (permalink)  
Antiguo 30/07/2009, 16:56
 
Fecha de Ingreso: febrero-2009
Mensajes: 53
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Forzar descarga

Cita:
Iniciado por anpefe Ver Mensaje
Lo que quiero es que los usuarios de mi web descarguen un PowerPoint, desde un enlace quiero forzar la descarga para evitar que lo haga desde el navegador ya que si le das abrir lo hace desde el navegador en vez de PowerPoint.
Ok ya entendi este es el código, solo tienes que reemplazar donde dice aqui va el nombre por el archivo y su extención.
Código PHP:
<?php
    $f 
"AQUI VA EL NOMBRE";
    
header("Content-type: application/octet-stream");
    
header("Content-Disposition: attachment; filename=\"$f\"\n");
    
$fp=fopen("$f""r");
    
fpassthru($fp);
?>
  #9 (permalink)  
Antiguo 30/07/2009, 17:53
 
Fecha de Ingreso: agosto-2008
Mensajes: 97
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Forzar descarga

Cita:
Iniciado por sheerrmaan Ver Mensaje
Ok ya entendi este es el código, solo tienes que reemplazar donde dice aqui va el nombre por el archivo y su extención.
Código PHP:
<?php
    $f 
"AQUI VA EL NOMBRE";
    
header("Content-type: application/octet-stream");
    
header("Content-Disposition: attachment; filename=\"$f\"\n");
    
$fp=fopen("$f""r");
    
fpassthru($fp);
?>
Amigo copie el código remplace el nombre por el archivo con su extensión y lo guarde con la extensión php y no resulto como debo colocar el enlace tal vez sea allí donde esté cometiendo el error
  #10 (permalink)  
Antiguo 30/07/2009, 18:20
 
Fecha de Ingreso: septiembre-2008
Mensajes: 350
Antigüedad: 15 años, 7 meses
Puntos: 31
Respuesta: Forzar descarga

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
__________________
╬-----╬
║☺₧☻║
╬-----╬
  #11 (permalink)  
Antiguo 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 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
  #12 (permalink)  
Antiguo 01/08/2009, 13:53
 
Fecha de Ingreso: agosto-2008
Mensajes: 97
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Forzar descarga

Ya solucione el problema con el siguiente script:

<?php
$f = $_GET["f"];
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$f\"\n");
$fp=fopen("$f", "r");
fpassthru($fp);
?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 08:23.