Foros del Web » Programando para Internet » PHP »

descargar archivos con php

Estas en el tema de descargar archivos con php en el foro de PHP en Foros del Web. Tengo una duda, necesito incluir un link en mi pagina que me permita descargar un archivo. gif y .doc del servidor utilice un codigo que ...
  #1 (permalink)  
Antiguo 04/03/2005, 16:20
 
Fecha de Ingreso: enero-2004
Mensajes: 230
Antigüedad: 20 años, 9 meses
Puntos: 0
descargar archivos con php

Tengo una duda, necesito incluir un link en mi pagina que me permita descargar un archivo. gif y .doc del servidor utilice un codigo que lo unico que me hizo fue que cuando cargara la pagina me la quisiera descargar, como puedo entrar a la pagina y mediante un enlace descargar el archivo?

Gracias
  #2 (permalink)  
Antiguo 04/03/2005, 16:26
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 21 años, 6 meses
Puntos: 2
tendrías que enviarle cabeceras para descargar (no se nada de eso) ya que obviamente un gif o un doc te lo abrira antes de descargarlo, pero todo se soluciona con las cabeceras, espera que algun experto lea el topic y seguro te ayuda...

Solo es cuestion de enviar unos header() al comienzo :)
__________________
I Love Programming...
  #3 (permalink)  
Antiguo 04/03/2005, 17:46
 
Fecha de Ingreso: febrero-2005
Mensajes: 670
Antigüedad: 19 años, 9 meses
Puntos: 0
Código PHP:
<?php
$file 
file("archivo.jpg");
$file2 implode(""$file);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=archivo.jpg\r\n\r\n");
header("Content-Length: ".strlen($file2)."\n\n");
echo 
$file2;
?>
Suerte
Fede
__________________
Federico H. García
Desarrollo Web
www.federicog.com.ar
  #4 (permalink)  
Antiguo 06/03/2005, 09:38
 
Fecha de Ingreso: enero-2004
Mensajes: 230
Antigüedad: 20 años, 9 meses
Puntos: 0
gracias por la respuesta ahora tengo una duda como lo llamo para que con un click o enlace el usuario pueda descargarlo.
  #5 (permalink)  
Antiguo 06/03/2005, 14:42
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 23 años, 3 meses
Puntos: 9
con el código, no?
  #6 (permalink)  
Antiguo 07/03/2005, 07:41
 
Fecha de Ingreso: enero-2004
Mensajes: 230
Antigüedad: 20 años, 9 meses
Puntos: 0
entonces el codigo para el enlace que debo poner fuera de la cabecera osea dentro del codigo html es <a href="archivo.jpg">enlace</a> y nada mas?
  #7 (permalink)  
Antiguo 07/03/2005, 08:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por lizalina
entonces el codigo para el enlace que debo poner fuera de la cabecera osea dentro del codigo html es <a href="archivo.jpg">enlace</a> y nada mas?
No ..

En tu caso .. ahora es tu script.php el que va hacer dos procesos:
1) montar las cabeceras HTTP adecuadas para iniciar la descarga del archivo.
2) leer tu archivo de donde esté y entregarlo al buffer de salida de PHP ..

Todo eso ya lo hace el ejemplo de thunder.scripts .... Tu sólo debes llamar a ese script tipo:

<a href="nose.php">bajar</a>

Para hacerlo más versatil .. puedes usar variables de control para pasarle a ese script el archivo a bajar ...
<a href="nose.php?archivo=nose.jpg">bajar nose.jpg</a>

Y modificando el script mencionado ...
$file = file($_GET['archivo']);

ATENCIÓN: Debes validar ese $_GET['archivo'] para restringir que archivos serán los que se puedan forzar su descarga .. sino te harán algo tipo: nose.php?archivo=nose.php y te descargaran el código fuente PHP de algo que no tegustaría que lo hiciesen.

Un saludo,
  #8 (permalink)  
Antiguo 07/03/2005, 09:16
 
Fecha de Ingreso: enero-2004
Mensajes: 230
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias cluster, un favorzote mas como valido el $_GET['archivo'], o debo validarlo en la cabecera.

Gracias
  #9 (permalink)  
Antiguo 07/03/2005, 09:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
$_GET['archivo'] según el ejemplo que puse .. contiene el nombre/ruta de un archivo que apunta en tu servidor .. eso para "PHP" es tan sólo una "cadena" (string) .. puedes validarlo de muchas formas .. Por ejemplo podrías tener un array con los nombres/rutas de archivos que se puedan "descargar" o bien los que no se puedan y limitar a cierto directorio ...(para que no te "suban" con un ../ o similar) Esto último con expresiones regulares podrías hacerlo ..


Un saludo,
  #10 (permalink)  
Antiguo 07/03/2005, 10:14
 
Fecha de Ingreso: enero-2004
Mensajes: 230
Antigüedad: 20 años, 9 meses
Puntos: 0
ahora si muchas gracias saludos a todos
  #11 (permalink)  
Antiguo 07/03/2005, 13:41
 
Fecha de Ingreso: enero-2004
Mensajes: 230
Antigüedad: 20 años, 9 meses
Puntos: 0
ESTO ES LO QUE INCLUI

<?php
$file = file($_GET['BOLIVIA.JPG']);
$file2 = implode("BOLIVIA.JPG", $file);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=archivo.jpg\r\n\r\n");
header("Content-Length: ".strlen($file2)."\n\n");
echo $file2;
?>

CON EL ENLACE DENTRO DEL HTML

<a href="BOLIVIA.JPG">enlace</a>

y me da el siguiente o los siguientes errores

Warning: file("") - No error in d:\archivos de programa\apache group\apache\htdocs\descarga.php on line 2

Warning: Bad arguments to implode() in d:\archivos de programa\apache group\apache\htdocs\descarga.php on line 3

Warning: Cannot add header information - headers already sent by (output started at d:\archivos de programa\apache group\apache\htdocs\descarga.php:2) in d:\archivos de programa\apache group\apache\htdocs\descarga.php on line 4

Warning: Cannot add header information - headers already sent by (output started at d:\archivos de programa\apache group\apache\htdocs\descarga.php:2) in d:\archivos de programa\apache group\apache\htdocs\descarga.php on line 5

Warning: Cannot add header information - headers already sent by (output started at d:\archivos de programa\apache group\apache\htdocs\descarga.php:2) in d:\archivos de programa\apache group\apache\htdocs\descarga.php on line 6

quisisera saber donde me equivoque, gracias
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 12:17.