Foros del Web » Programando para Internet » PHP »

bajar archivos con PHP

Estas en el tema de bajar archivos con PHP en el foro de PHP en Foros del Web. Buenas a todos. Antes de plantear este nuevo tema he consultado por el foro acerca del tema y a pesar de que he encontrado buenos ...
  #1 (permalink)  
Antiguo 18/11/2008, 03:12
 
Fecha de Ingreso: noviembre-2008
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Buenas a todos. Antes de plantear este nuevo tema he consultado por el foro acerca del tema y a pesar de que he encontrado buenos aportes no me ha quedado muy claro lo que personalmente pretendo hacer. En mi caso no tengo problema para listar los archivos de una carpeta del servidor pero me gustaría dar la opción al usuario de que pudiera bajarse (o guardar en disco) cualquiera de estos archivos.

Gracias de antemano y saludos.

Buenas de nuevo, aquí indico un aporte de una página que encontré sobre el tema que planteo (http://www.foromsn.com/index.php?Ver...&Id=256869).El caso es que haciendo pruebas con este mismo código e intentando acceder al directorio del servidor en el que tengo los archivos me aparece el mensaje:Notice: Undefined index: f in C:/... on line 3.

<?php
$extensiones = array("jpg", "jpeg", "png", "gif" , "doc" , "pdf");
$f = $_GET["f"];
if(strpos($f,"/")!==false){
die("No puedes navegar por otros directorios");
}
$ftmp = explode(".",$f);
$fExt = strtolower($ftmp[count($ftmp)-1]);

if(!in_array($fExt,$extensiones)){
die("<b>ERROR!</b> no es posible descargar archivos con la extensión $fExt");
}

header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$f\"\n");
$fp=fopen("$f", "r");
fpassthru($fp);
?>

Os agradecería que me indicaráis algún FAQ donde se explique esta cuestión o indicarme porque me aparece ese mensaje de error.¿Acaso $_GET["f"] debe recoger algún valor que le envíe desde otra pagina?
Gracias nuevamente.

Última edición por GatorV; 18/11/2008 a las 10:25
  #2 (permalink)  
Antiguo 18/11/2008, 10:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: bajar archivos con PHP

Exactamente para que ese codigo te funcione tienes que pasarle por parámetro el archivo por ejemplo: descarga.php?f=archivo.jpg.

Saludos.
  #3 (permalink)  
Antiguo 18/11/2008, 10:26
Avatar de eft0  
Fecha de Ingreso: junio-2003
Ubicación: Santiago - Chile
Mensajes: 635
Antigüedad: 20 años, 10 meses
Puntos: 9
Respuesta: bajar archivos con PHP

Se llama force download, intenta buscando eso.
__________________
eft0's stuff! - http://estebanfernandez.net
  #4 (permalink)  
Antiguo 18/11/2008, 10:31
 
Fecha de Ingreso: noviembre-2008
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: bajar archivos con PHP

Gracias por responder tanto a GatorV como a eft().
Otra pregunta GatorV:es posible mostrar al usuario una lista de archivos de un directorio y que este usuario pueda seleccionar el archivo a descargar?

Gracias otra vez
  #5 (permalink)  
Antiguo 18/11/2008, 10:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: bajar archivos con PHP

Claro, usa opendir(), junto con readdir() y closedir() con eso muestras la lista y luego en archivo pones un link a tu script de descarga.

Saludos.
  #6 (permalink)  
Antiguo 18/11/2008, 10:35
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: bajar archivos con PHP

disculpa que me meta no???
pero claro que puedes..... puedes leer el directorio usando opendir() y readdir().
Mira este post Click MasterOjitos.

solo tendrias que agregarle que al darle click se habra el archivo y a la vez este se descargue.

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #7 (permalink)  
Antiguo 18/11/2008, 10:39
 
Fecha de Ingreso: noviembre-2008
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Ok, gracias.Me imagino que eso quiere decir que por cada archivo que tenga en el directorio deberé poner un link al script de descarga que haya creado. Aquí me entra la duda.

gracias por la información masterojitos.

Última edición por GatorV; 18/11/2008 a las 10:45
  #8 (permalink)  
Antiguo 18/11/2008, 10:42
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: bajar archivos con PHP

no, en el link que te puse (lo viste???)
recorres todos los archivos... y es decir, no vas a tener que poner un link manualmente para cada uno, sino con el bucle vas a generar un link correspondiente para cada uno.

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #9 (permalink)  
Antiguo 18/11/2008, 10:56
 
Fecha de Ingreso: noviembre-2008
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: bajar archivos con PHP

Disculpa masterojitos, todavía estoy verde en el tema del PHP pero tienes razón.
Ya lo he visto, probaré lo que me dices y ya os comentaré.

Gracias y saludos.
  #10 (permalink)  
Antiguo 20/11/2008, 08:28
 
Fecha de Ingreso: noviembre-2008
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: bajar archivos con PHP

Qué tal?Viendo el post que me recomendó masterojitos se me han aclarado muchas dudas pero no sé si me falta algo en lo que estoy queriendo hacer porque no me termina de funcionar. Al hacer click sobre uno de los archivos del directorio que se listan como link (directorio.php) se me debe forzar la descarga (la variable la recoge el fichero descarga.php).
En el fichero directorio.php tendría algo así:
<a href="descarga.php?archivo=$archivo">$archivo</a>";

y en el fichero descarga.php tendría lo siguiente,donde GET recoge lo que se le envía:

$arc=$_GET['archivo'];

¿Esto estaría bien?

Muchas gracias como siempre por orientarme en estas cuestiones.
  #11 (permalink)  
Antiguo 20/11/2008, 10:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: bajar archivos con PHP

Asi es es correcto, ahora solo te faltaria forzar la descarga y leer el archivo $arc.

Saludos
  #12 (permalink)  
Antiguo 20/11/2008, 11:03
 
Fecha de Ingreso: noviembre-2008
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: bajar archivos con PHP

Muchas gracias GatorV. Otra duda:
he visto que también podría ponerlo así(sería válido también?):

echo "<a href="descarga.php?archivo=<?php echo $archivo;?>">$archivo</a>";

Gracias
  #13 (permalink)  
Antiguo 20/11/2008, 11:21
 
Fecha de Ingreso: noviembre-2008
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: bajar archivos con PHP

Lo comentaba porque cuando ejecuto el sript me aparece en la línea de este código: echo "<a href="descarga.php?archivo=<?php echo $archivo;?>">$archivo</a>";
el error Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\XXX
y creo que está correcto
  #14 (permalink)  
Antiguo 20/11/2008, 11:28
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: bajar archivos con PHP

Hola daimiel, hacer esto:
Código PHP:
echo "<a href="descarga.php?archivo=<?php echo $archivo;?>">$archivo</a>";
1. No es debido, introduces html en php, php aunque lo hace, no se utiliza para imprimir html.

La forma correcta:
Código PHP:
<a href="descarga.php?archivo=<?php echo $archivo;?>"><?php echo $archivo;?></a>
Html para presentar páginas, php para presentar datos (y otros cosas )...

2. Si aún así deseas utilizar esa intrucción, tienes un error sintáctico, déjala así:
Código PHP:
echo "<a href=\"descarga.php?archivo=$archivo\">$archivo</a>"
Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com

Última edición por Carxl; 20/11/2008 a las 11:48 Razón: Me había equivocado en la última instrucción, ya quedó bien
  #15 (permalink)  
Antiguo 20/11/2008, 11:39
 
Fecha de Ingreso: noviembre-2008
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: bajar archivos con PHP

Muchas gracias Carxl por la aclaración. Probaré lo que dices.
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 12:23.