Foros del Web » Programando para Internet » PHP »

Ocultar url para abrir archivos

Estas en el tema de Ocultar url para abrir archivos en el foro de PHP en Foros del Web. Hola, quisiera saber como puedo hacer para abrir archivos adjuntos sin que se muestre la url, tengo los datos del archivo en una base de ...
  #1 (permalink)  
Antiguo 24/08/2006, 09:00
 
Fecha de Ingreso: febrero-2005
Mensajes: 98
Antigüedad: 19 años, 2 meses
Puntos: 0
Ocultar url para abrir archivos

Hola, quisiera saber como puedo hacer para abrir archivos adjuntos sin que se muestre la url, tengo los datos del archivo en una base de datos, mi problema es que no sé usar los headers. Gracias
  #2 (permalink)  
Antiguo 24/08/2006, 09:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. tu archivo en tu BBDD sólo tienes la referencia del nombre del archivo (y/o con su ruta hacia el mismo) o el archivo lo tienes en "binario" en tu BBDD (sobre un campo tipo BLOB o similar ..)?

En cualquier caso .. las cabceras HTTP para entregar un archivo al cliente (navegador) para iniciar su descarga (Lo de "archivos adjuntos"? .. se empleraría más bien el término para e-mails? .. ), serían (realmente hay muchas combinaciones.. algunas van mejor para ciertos navegadores/clientes otras no tanto ..):

Código PHP:
   header('Content-type: application/force-download');
   
header('Content-Transfer-Encoding: Binary');
   
header('Content-length: '.filesize($file));
   
header('Content-disposition: attachment; filename='.basename($file)); 
header()
www.php.net/header

Tienes más comentarios al respecto en la documentación de PHP sobre la función header() en los comentarios de los usaurios (abajo).

Si tienes el nombre del archivo listo .. lo obtienes previa consulta SQL a tu BBDD y lo entregas al "buffer de salida" de PHP usando:

Código PHP:
readfile($file); 
(Siendo $file el nombre/ruta de tu archivo a descargar).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 24/08/2006, 09:44
 
Fecha de Ingreso: febrero-2005
Mensajes: 98
Antigüedad: 19 años, 2 meses
Puntos: 0
hola gracias por tu respuesta, efectivamente, tengo el nombre del archivo y la ruta almacenados en la bd, lo que me has dado me funciona pero siempre y cuando guarde el archivo primero y después lo abra, porque si lo intento abrir directamente (un archivo .doc por ejemplo) me sale el siguiente mensaje:

No se puede encontrar el archivo.
Pruebe una o varias de las siguientes operaciones:
*Compruebe la escritura del nombre de documento
*Pruebe con un nombre de archivo diferente

y justo ahi me sale una ruta temporal del archivo

Estoy con windows xp

Gracias
  #4 (permalink)  
Antiguo 24/08/2006, 09:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Más que "windows XP" lo que interesa es el navegador que usas (y versión).

Si quieres abrir tu archivo "en línea" (ese .doc . .un .pdf . etc) usa en lugar de "attachment" ... "inline" en el "'Content-disposition" cabecrera.

Por lo demás .. te invito a leer los comentarios de los usuarios de la función header() (www.php.net/header) .. hablan de "detalles" sobre diferentes versiones de navegadores y fabricantes. Lamentablemente no todo "cliente" interpreta igual las mismas cabeceras HTTP (aunque es un "standard" no sé por qué cada navegador define otras y/o omite otras tantas).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 19/09/2006, 19:57
 
Fecha de Ingreso: febrero-2005
Mensajes: 98
Antigüedad: 19 años, 2 meses
Puntos: 0
Cluster, Hola nuevamente, creí que todo lo tenía solucionado, pero al usar inline, tengo problemas con los pdfs, en varias máquinas con IE no me abre el documento, solo se queda en una página en blanco... sabes cómo puedo solucionar esto? 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.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:36.