Foros del Web » Programando para Internet » PHP »

Problemas con headers, ie y downloads

Estas en el tema de Problemas con headers, ie y downloads en el foro de PHP en Foros del Web. Hola a todos, Estoy teniendo unos "ligeros" problemas con el dichoso ie y la descarga de archivos. Os cuento, quiero que al dar a un ...
  #1 (permalink)  
Antiguo 29/03/2006, 04:12
Avatar de gelit0  
Fecha de Ingreso: enero-2006
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Problemas con headers, ie y downloads

Hola a todos,

Estoy teniendo unos "ligeros" problemas con el dichoso ie y la descarga de archivos.

Os cuento, quiero que al dar a un enlace vaya a una página que cree un archivo de texto plano con los datos sacados de una base de datos y descarge el archivo con un nombre dinámico, creado dependiendo de la fecha.

Lo he conseguido hacer, después de mirar por varios sitios, de la siguiente forma:
Código PHP:
<?php
require_once ("../../cgi/db_aux.php");
require (
"../../extras/db_conf.inc");
$enlace db_connect($sql_host$sql_usuario$sql_pass);
db_database('prointec_horas');
$where = array(
'num_emp LIKE "%"',
);
$resultado db_query('num_emp, codigo, horas_imputadas, fecha''partes_horas'$where);
$salida ='"Num_emp","Codigo","Horas","Fecha"'."\r\n";
 
while (
$linea mysql_fetch_row($resultado) ){
$salida .= '"'.$linea[0].'","'.$linea[1].'","';
$salida .= $linea[2].'","'.$linea[3].'"';
$salida .= "\r\n";
}
 
// creo un archivo temporal, introduzco los datos.
$nombre_temp tempnam("/tmp""DAT");
$gestor fopen($nombre_temp"w");
fwrite($gestor$salida);
fclose($gestor);
 
// abrir el archivo en modo binario
$filename 'horas'.date(my).'.txt';
$gestor fopen($nombre_temp'rb');
 
// enviar las cabeceras correctas
header("Content-Transfer-Encoding: binary");
header('Content-Type: application/txt'); 
header("Content-Length: " filesize($nombre_temp));
header('Content-Disposition:attachment;filename="'.$filename.'"');
 
// volcar la imagen y detener el script
fpassthru($gestor);
exit;
 
unlink($nombre_temp);
?>
Bueno, pues en Firefox, Mozilla y en Opera funciona, en el IE da fallos a veces... sobretodo si pongo la url completa en vez de ir por el enlace.

El fallo viene de que pone el nombre del enlace y no llega a descargar nada (enlazo con una url del estilo http://dominio/admin/?op=enviar y me sale directamente descargar ?op=enviar, en vez de horasXXXX.txt)

Alguien me puede decir porqué diantres no me funcionan bien los headers con el IE ?? (Todos sabemos lo "maravilloso" *cought, *cought, que es el IE, y que nadie debería usarlo, el problema es que eso no se le puede decir a un jefe)

Alguna otra idea para descargar el archivito en cuestión¿?

Gracias de antemano...

PS: Apache 1.3.34, PHP 4.3.11, MySQL 3.23.49. El desarrollo lo hago en un XP, a la espera de que me dejen instalar Debian ;) pero en producción está bajo una Debian (Con la misma configuración)

PS2: Sobre la consulta a la base de datos, lo hago con unas funciones propias, así q podéis saltaros esa parte ;)
__________________
.-. GeL/T0 .-. Quieres saber mas de mi? lee mi blog: http://g05l21.net

Mi CV:
http://storage.g05l21.net/cv
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 19:18.