Foros del Web » Programando para Internet » PHP »

Al descargar el archivo me muestra extension incorrecta...

Estas en el tema de Al descargar el archivo me muestra extension incorrecta... en el foro de PHP en Foros del Web. Hola de nuevo... Pues lo que sucede ahora estoy programando un foro, y estoy en el modulo que permite adjuntar archivos, toda va bien, ya ...
  #1 (permalink)  
Antiguo 16/08/2004, 11:04
 
Fecha de Ingreso: noviembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 249
Antigüedad: 14 años
Puntos: 2
Pregunta Al descargar el archivo me muestra extension incorrecta...

Hola de nuevo...

Pues lo que sucede ahora estoy programando un foro, y estoy en el modulo que permite adjuntar archivos, toda va bien, ya se realiza el upload del archivo a la base de datos, el problema surgue al momento de dar click en el enlace que coloco para descargar, uso un archivo descargar.php desde el cual gestiono la optencion del archivo solicitado, contador de descargas y la transferencia al usuario... el archivo se descarga completo, al bajar no se corrompe, el problema es que en la ventana Guardar como el archivo toma el nombre descargar.php sin importar el tipo de archivo que yo haya especificado...

Se supone que uso el codigo siguiente:

header("Content-type: " . $tipo);
echo $datos;


donde $tipo es el tipo de archivo a enviar, como por ejemplo image/pjpeg o audio/mpeg o application/x-zip-compres, etc
donde $datos es el contenido real del archivo

Y pues me gustaria que me hecharan una manita para ver como puedo hacer que en la ventana Guardar como no me salga la extension .php sino que segun sea el tipo de archivo aparezca la extencion correcta, es decir, si se desea descargar un archivo .zip tipo application/x-zip-compres, no importa que aparezca el nombre descargar pero que aparesca con la extencion correcta .zip, quedando algo asi como descargar.zip

Les comento que es script funciona bien cuando se desea descargar un archivo .mp3 (tipo audio/mpeg) y me muestra descargar.mp3 pero con los demas tipos de archivos siempre me muestra descargar.php, lo cual es que no quiere que me muestre...

Me seran de gran ayuda...

Gracias...
__________________
Crea tu Foro Gratis
Portal Tabasco
  #2 (permalink)  
Antiguo 16/08/2004, 11:13
 
Fecha de Ingreso: agosto-2004
Mensajes: 44
Antigüedad: 13 años, 4 meses
Puntos: 0
Yo genero un archivo excel desde la pagina y lo hago de esta manera, en la pagina q mostrara el enlace a descargar el archivo excel (en tu caso zip), lo llamo de esta manera:
Código PHP:
print "<br>"."<a href=reporteexcel.php?estadox=$estado+&fechay=".$fecha0."+&fechaz=".$fecha1."+&ciudad=".$ciudad.">"."Descargar Reporte <img src=imagenes/excel.gif></a><br>"
Y luego en el archivo reporteexcel.php contiene en el header lo sgte:
Código PHP:
header("Content-type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=".$est2." DEL ".$fechay." AL ".$fechaz.".xls"); 
__________________
SEGUIR CON LO BUENO, MEJORAR LO QUE SE DEBA Y CREAR LO QUE SE PUEDA.
  #3 (permalink)  
Antiguo 16/08/2004, 11:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Principalmente lo que te faltó es la cabecera HTTP que indica que nombre de archivo va a quedar cuando inicie la descarga:

header("Content-Disposition: attachment; filename=nombre_Archivo.tal");

Esa cabecera HTTP no es la única .. hay muchas más que define el protocolo HTTP y que indican cosas como por ejemplo: el tamaño del archivo .. como para que un gestor de descargas pueda calcular promédios para el tiempo estimado de descarga .. o incluso algo más complicado para dar a esa descarga la opción "resume" (para que se pueda retomar la descarga en otro momento si se perdió la conexion). .. De esto último en las FAQ's de este foro PHP tienen un ejemplo.

Un saludo,
  #4 (permalink)  
Antiguo 16/08/2004, 11:49
 
Fecha de Ingreso: noviembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 249
Antigüedad: 14 años
Puntos: 2
De acuerdo

Cita:
Iniciado por Gecko
Yo genero un archivo excel desde la pagina y lo hago de esta manera, en la pagina q mostrara el enlace a descargar el archivo excel (en tu caso zip), lo llamo de esta manera:
Código PHP:
print "<br>"."<a href=reporteexcel.php?estadox=$estado+&fechay=".$fecha0."+&fechaz=".$fecha1."+&ciudad=".$ciudad.">"."Descargar Reporte <img src=imagenes/excel.gif></a><br>"
Y luego en el archivo reporteexcel.php contiene en el header lo sgte:
Código PHP:
header("Content-type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=".$est2." DEL ".$fechay." AL ".$fechaz.".xls"); 
De poca...

Acabo de probar lo que me dices y funciona de poca...

Ya lo habia intentado hacer usando el header

header("file-name: " . $Nombre);

Pero no me salia y con el header que me mencionas quedo asi:

header("Content-Disposition: attachment; filename=".$Nombre);

y funciona muy bien... mas que excelente... Perfecto...

Gracias!!!!
__________________
Crea tu Foro Gratis
Portal Tabasco
  #5 (permalink)  
Antiguo 16/08/2004, 12:47
 
Fecha de Ingreso: noviembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 249
Antigüedad: 14 años
Puntos: 2
De acuerdo

Cita:
Iniciado por Cluster
Principalmente lo que te faltó es la cabecera HTTP que indica que nombre de archivo va a quedar cuando inicie la descarga:

header("Content-Disposition: attachment; filename=nombre_Archivo.tal");

Esa cabecera HTTP no es la única .. hay muchas más que define el protocolo HTTP y que indican cosas como por ejemplo: el tamaño del archivo .. como para que un gestor de descargas pueda calcular promédios para el tiempo estimado de descarga .. o incluso algo más complicado para dar a esa descarga la opción "resume" (para que se pueda retomar la descarga en otro momento si se perdió la conexion). .. De esto último en las FAQ's de este foro PHP tienen un ejemplo.

Un saludo,
Enterado, voy de nuevo a checar el FAQ, que esto me sera de mucha utilidad.... Gracias!!!
__________________
Crea tu Foro Gratis
Portal Tabasco
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 23:57.