Buenas:
Ante todo muchas gracias porque me habéis ayudado mucho anteriormente.
Quería saber si me podíais ayudar en un problema que me ocurre.
Tengo una pagina que lee los archivos de un directorio y crea un link para descargar dicho archivo. El problema es que el archivo descarga en una carpeta temporal y lo abre la aplicación a la que corresponde (windows media, word, etc...).
He leído que para que baja el archivo sin abrir ninguna aplicación hay que enviar las cabeceras primero.
Por lo tanto he hecho un primer script donde lee los archivos del directorio seleccionado y crea los links. Es este:
//abrimos la carpeta
$dir = opendir($path);
//Mostramos los archivos
$contamos =1;
while ($elemento = readdir($dir))
{
if ($elemento != "." && $elemento !="..")
{
$archivo = "tribeca/".$elemento;
if ($contamos%2==0)
{
echo ("<a href='descargandotribeca.php?id=$elemento'>");
echo ("<input name='campo' type='text' value = '$elemento' disabled = 'disabled' size = '30'/>");
echo ("<br />");
}else {
echo ("<a href='descargandotribeca.php?id=$elemento'>");
echo ("<input name='campo' type='text' value = '$elemento' disabled = 'disabled' size = '30'/>");
}
$contamos = ++$contamos;
}
}
//Cerramos la carpeta
closedir($dir);
?>
y la descarga se recibe en el segundo script que es este (descargandotribeca.php):
<?
session_start ();
$id = $_GET[elemento];
$enlace = "tribeca/".$id;
header ("Content-Disposition: attachment; filename=".$id."\n\n");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($enlace));
readfile($enlace);
?>
El problema es que no me descarga el archivo correspondiente, sino el propio descargandotribeca.php.
Tambien he probado a colocar las etiquetas <html> antes de los header, pero me da error de cabeceras ya enviadas.
Donde puede estar el fallo?.
Muchas gracias por anticipado.