Ver Mensaje Individual
  #7 (permalink)  
Antiguo 19/05/2005, 12:16
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Código PHP:
<!--pagdescarga.html-->
<?php
$enlace 
$servidor.'/'.$nombre//$nombre es el campo en la B.D  
header ("Content-Disposition: attachment; filename=".$nombre."nn");
header ("Content-Type: application/octet-stream");
readfile($enlace);
?>....................
<a href="<?=$servidor.'/'.$nombre?>">DESCARGAR</a>
Eso no es correcto .. No sé si comprendes que hacen las "cabeceras HTTP" que estás usando .. pero si no es así te explico un poco por encima (por qué sino no harás mas que probar y probar sin resultados):

Cara a un "navegador" .. el contenido que se le envia a este .. vía esas "cabeceras HTTP" se le indica de que tipo es para que -en consecuencia- lo interprete; si tu generas una página HTML por defecto le estás diciendo a tu navegador "oye .. te envio HTML para que lo interpretes" .. si envias una imagen .. lo mismo (y si lo quieres "mezclar" entre el "HTML" .. en algún punto usas un tag de imagen: <img src="...."> .. y por ahí se le ha de indicar "esto son datos de tipo tal .. (formato MIME)).

Cuando tu quieres "forzar" un archivo para descargar .. para que se te "abra" esa ventanita típica para descargar el archivo .. lo que haces es "componer" las cabeceras HTTP adecuadas para tal fin. Estas son las que ahí usas (en el ejemplo que te destaco) .. Para este efecto, todo "HTML" está de más .. no puedes usarlo, empezando por "comentarios" .. ni un "link" para descargar en ese mismo script .. en tal caso deberías usar un script/página HTML común con un link que apunte a tu script.php de descargas donde tal vez le pases el parámetro de que archivo se descargará (una referencia de un "ID" de alguna BD donde obtienes el nombre del archivo .. etc o directo el archivo en sí por su nombre).

De lo dicho .. en tu script que obtengas los nombres de los archivos a descargar (o identificadores que corresponda) debes generar "HTML" con un link que apunte a tu Script de descarga que NO contiene nada de HTML .. sólo esas cabeceras HTTP:

Un link tipo:
Código PHP:
<a href="descargar.php?nombre=<? echo $nombre ?>">descargar <? echo $nombre ?></a>
y descargar.php recibirá ese "nombre" o identificador de tu variable que llamará a tu archivo .. Lo ideal es que hagas cosas tipo:

descargar.php?id=1 .. y en "descargar.php" hagas una consulta SQL a tu BD para obtener el campo de tu BD del registro "id=...." para obtener el nombre del archivo a descargar .. Así en ningún momento "desvelas" donde está el archivo, ni su nombre ni otros detalles del mismo.

Un saludo,