Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/12/2004, 09:32
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La cabecera HTTP: Content-type: define el formato MIME del archivo que se va a entregar al navegador .. la siguiente cabecera sobre Content-Disposition indica en ese caso al "navegador" (cliente mejor dicho) que el dato que se le va a enviar es para que lo descargue.

Todo eso de "cabeceras HTTP" no son própias de PHP ni las define este, PHP tan sólo te pone a tu disposición unas funciones como header() para "enviarlas" .. lo que sean o definan es própio del protocolo HTTP no de PHP.

El script que te propone sism82 hace dos cosas:
1) prepara las cabeceras HTTP para indicar al navegador que tipo de datos se le van a enviar y como ha de procesarlos.
2) PHP vía "readfile()" lee el archivo de su ruta y nombre dado y le entrega al "buffer de salida de PHP".

El formato "MIME" de tu archivo a descargar lo puedes obtener de alguna forma bien sea al "subir" tu archivo .. registras su formato MIME que es (es lo ideal y más rápido) o bien al "abrir" tu archivo .. antes miras que MIME es (con: nomeacuerdolafuncion())

El objetivo de todo esto es tener un script que lo llames tipo:
bajar.php?archivo=tal.tal

o algo así .. NO sé si administras tus archivos en una BD o tan sólo los tienes ahí en un directorio de tu servidor y los links hacia el archivo los haces tu "a mano".

De todas formas .. como el archivo es sólo para "forzar" la descarga .. el tipo de archivo (el MIME) no es necesario indicarlo (creo) .. prueba algo tipo:

Código PHP:
<?
$file
="nose.mp3";
header('Content-Description: File Transfer'); 
header('Content-Type: application/force-download'); 
header('Content-Length: ' filesize($filename)); 
header('Content-Disposition: attachment; filename=' basename($file)); 
readfile($file); 
?>

Un saludo,