Foros del Web » Programando para Internet » PHP »

Problema al forzar la descarga en PHP

Estas en el tema de Problema al forzar la descarga en PHP en el foro de PHP en Foros del Web. Bueno mi problema es el siguiente: Tengo dificultades al efectuar la descarga de archivos de manera forzada, es decir tengo una pagina en cuya estructura ...
  #1 (permalink)  
Antiguo 10/10/2007, 01:36
Avatar de Shion_Dan_Aries  
Fecha de Ingreso: marzo-2006
Mensajes: 105
Antigüedad: 18 años, 1 mes
Puntos: 0
Problema al forzar la descarga en PHP

Bueno mi problema es el siguiente:

Tengo dificultades al efectuar la descarga de archivos de manera forzada, es decir tengo una pagina en cuya estructura hace referencia a archivos para ser descargados de la siguiente manera:
echo "<a href=download.php?file=".base64_encode($archivo)." >".$archivo."</a>";

y la pagina download.php tiene el siguiente codigo

<?php
$id=base64_decode($_GET['file']);
$pathFile="administracion/projects/files";
$enlace = $pathFile."/".$id;
header ("Content-Disposition: attachment; filename=".$id."\n\n");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($enlace));
readfile($enlace);
?>

el problema es que descarga el archivo en blanco, sin el contenido del mismo, esto para los archivos word.
  #2 (permalink)  
Antiguo 10/10/2007, 02:04
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Problema al forzar la descarga en PHP

¿Has depurado download.php? Ya sabes, los tipicos echo para ver si recibe bien los valores. Ademas, es una buena costumbre validar la existencia del fichero con file_exists() y actuar en consecuencia (mandar un 404 y redirigir a una pagina de error).
  #3 (permalink)  
Antiguo 10/10/2007, 04:06
 
Fecha de Ingreso: marzo-2005
Ubicación: Sevilla
Mensajes: 277
Antigüedad: 19 años, 1 mes
Puntos: 2
Re: Problema al forzar la descarga en PHP

pues yo a eso no le veo ningun fallo. Yo estuve usando un código casi idéntico y me funcionaba bien.
  #4 (permalink)  
Antiguo 10/10/2007, 07:37
Avatar de arwen_1  
Fecha de Ingreso: diciembre-2006
Mensajes: 81
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Problema al forzar la descarga en PHP

Hola! yo estaba tambien forzando bajar los archivos y encontre varios codigos [quizas ya los tienes ] pero te los pego por sia..

en este la diferencia con el tuyo es una @ antes del readfile, la verdad no se cual es la diferencia, ya que probe con y sin @ e igual me funciona.
Código PHP:
<?php
 header 
("Content-Disposition: attachment; filename=".$file."\n\n");
 
header ("Content-Type: application/octet-stream"."\n\n");
 
header ("Content-Length: ".filesize($url)."\n\n");
 @
readfile($url);
 
?>
en el mismo lugar donde encontre ese codigo aparece:
Código PHP:
<?php
header
"Content-type: application/savingfile" );
header"Content-Disposition: attachment; filename=$file" );
header"Content-Description: Document." );
readfile("$url");
?>
[este si que no me funciona bien, en el archivo a descargar le adiciona el codigo html y javascript de la pag de donde lo llamo ]

y por ultimo, un codigo que me fue dado en este foro, q tampoco me funciona y es mas corto que los otros :
Código PHP:
<?
     header 
("Content-Disposition: attachment; filename=".$file.";" );
     
header ("Content-Type: application/force-download"); */

?>

bueno espero q alguno de esos te pueda ayudar ya que viendo el codigo tuyo no le veo ningun ptoblema a mi ese mismo que tu usas me funciona perfecto, no se si tenga que ver que mi archivo q deseo forzar a descargar esta en la misma carpeta donde esta el archivo .php de todas maneras deberia funcionart
  #5 (permalink)  
Antiguo 10/10/2007, 08:38
 
Fecha de Ingreso: julio-2006
Mensajes: 96
Antigüedad: 17 años, 9 meses
Puntos: 2
Re: Problema al forzar la descarga en PHP

la diferencia de usar @ antes de una funciones es que le indicas de ese modo que si falla no te arroje el mensaje de error.

Saludos
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:38.