Foros del Web » Programando para Internet » PHP »

Dudilla al descargar archivo

Estas en el tema de Dudilla al descargar archivo en el foro de PHP en Foros del Web. Hola a tod@s: Estoy realizando el modo de subir archivos a mi web y poder descargarlos.La súbida la realiza correctamente.Una vez que están subidos,la web ...
  #1 (permalink)  
Antiguo 06/09/2004, 09:26
 
Fecha de Ingreso: octubre-2003
Mensajes: 146
Antigüedad: 20 años, 5 meses
Puntos: 1
Dudilla al descargar archivo

Hola a tod@s:

Estoy realizando el modo de subir archivos a mi web y poder descargarlos.La súbida la realiza correctamente.Una vez que están subidos,la web dispone de una opción para mostrar la descripción de los archivos y un campo para poder descargarlos que tendrá un enlace a la ruta donde están en el servidor.Dicha ruta es un campo de la tabla de los archivos,que en mi caso la ruta es:
/upload/archivos/....(nombre archivo)....

Y tras consultar a la base de datos saco dicha ruta y la hago un enlace normal para poder descargar el archivo.Ahora bien,el archivo se me abre vía web y funciona correctamente(he probado con una foto y se me visualiza correctamente).Pero yo lo que quiero es que me salga cuando pulso el enlace descargar que me salga el cuadro de dialogo Guardar Como para poder descargarlos a mi ordenador y no a través de la web,¿cómo puedo hacer esto?Espero que puedan ayudarme.El código que tengo es:

<tr>
<td><b>Descargar archivo: </b></td>
<td><a href="<?php echo "../$archivo"; ?>">Descarga</a></td>
</tr>

donde la variable $archivo contiene la ruta ../upload/archivos/.... y el ../ lo utilizo para bajar al directorio padre.Muchas gracias.Un saludo
__________________
·۰•●Pi®®ili●•۰· Lo esencial es invisible a los ojos
  #2 (permalink)  
Antiguo 06/09/2004, 10:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Para conseguir ese efecto .. debes componer las cabeceras HTTP adecuadas para que tu "navegador" entienda que los datos que se le van a enviar son para que los descargue y no para que los intente asociar al "visualizador/ejecutor" que lo interprete (caso de unas imagenes -> tu navegador por ejemplo .. o un .pdf sería tu lector de PDF que uses .. o un .doc -> word .. etc)

Estas cabeceras HTTP son parte del protocolo HTTP (que lo define sus RFC's correspondientes).

Desde PHP se "lanzan" estas cabeceras HTTP vía la función:
header()
www.php.net/header (donde veras ejemplos de lo que necesitas usar)

Y tras este envio de cabeceras tendras que entregar tu archivo al "buffer de salida" de PHP .. eso lo puedes hacer por ejemplo con la función:

readfile($tu_ruta_nombre_archivo);

Quedando algo tipo:

descargar.php
Código PHP:
<?
header 
("cabeceras HTTP adecauadas"); 
readfile($_GET['archivo']);
?>
Y tus links de descarga ahora serán algo tipo:

Código PHP:
<a href="descargar.php?archivo=nose.tal">descargar nose.tal</a
Eso sí, .. valida que archivos son los que se pueden descargar .. por qué sino pondras algo tipo descargar.php=archivo=config.php y .. me bajaré tu script PHP que tal vez contiene información delicada sobre la conexión a tu BD y otros datos...


Un saludo,
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 09:31.