Foros del Web » Programando para Internet » PHP »

Archivos descargados desde PHP se dañan

Estas en el tema de Archivos descargados desde PHP se dañan en el foro de PHP en Foros del Web. Hola a todos... desde hace mucho tiempo estoy implementando una aplicación. En ésta se generan archivos de word y excel (plantillas) que se descargan al ...
  #1 (permalink)  
Antiguo 17/03/2009, 11:27
 
Fecha de Ingreso: julio-2008
Ubicación: Caldas, Antioquia, Colombia
Mensajes: 81
Antigüedad: 15 años, 9 meses
Puntos: 4
Archivos descargados desde PHP se dañan

Hola a todos...

desde hace mucho tiempo estoy implementando una aplicación. En ésta se generan archivos de word y excel (plantillas) que se descargan al equipo local.

Específicamente utilizo dos formas para hacer esto:

para los archivo de word (generados desde una plantilla rtf) utilizo lo siguiente:

Código PHP:
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Description: File Transfer"); 
header("Content-Type: application/force-download"); 
//header("Content-Length: " . strlen($rtf)); 
header("Content-Disposition: attachment; filename=Portada-$op.doc");
echo 
$rtf
y para los archivos de excel:

Código PHP:
header ("Content-Disposition: attachment; filename=TP.xls\n\n");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($enlace));
readfile($enlace);
//unlink($enlace); 
He descartado que los archivos se generen erróneamente porque sin éstas líneas, los archivos se guardan en el servidor y los abro perfectamente. el problema es cuando se tienen que descargar a la máquina local. En el caso de los archivos de word, me pide que escoja la codificación para ver el archivo y me muestra una serie de caracteres extraños (o bueno, ni tan extraños, se trata de carácteres propios de rtf). y en el de excel me muestra un error de importación de HTML.

Hasta ayer todas estas funcionalidades estaban correctas. sospecho que se puede deber a algo en el servidor, pero no tengo idea de lo que debo buscar.

Espero que me puedan colaborar... gracias de antemano.

Saludos.
  #2 (permalink)  
Antiguo 17/03/2009, 11:48
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: Archivos descargados desde PHP se dañan

En el de excell quita los 2 \n del header(). El del rtf parece estar bien, prueba a quitar los 3 headers del control de cache.

Y asegurate de que no envias ningun espacio en blanco de mas antes del contenido.
  #3 (permalink)  
Antiguo 17/03/2009, 12:05
 
Fecha de Ingreso: julio-2008
Ubicación: Caldas, Antioquia, Colombia
Mensajes: 81
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Archivos descargados desde PHP se dañan

Hola gracias por la respuesta pero hice lo que me dijiste y sigue igual.
Verifiqué lo del espacio en blanco y no, estoy seguro de que no mando ninguno.

Te repito que me parece muy curioso que ayer en la tarde funcionara perfecto. Y es que de hecho no falla sólo en una exportación sino en todas (son unas 5 exportaciones 4 a word y 1 a excel), y ninguna funciona hoy ( a pesar de que habían funcionado perfectamente anteriormente).

Gracias por la colaboración... estará atento a cualquier otra respuesta.
  #4 (permalink)  
Antiguo 17/03/2009, 15:06
 
Fecha de Ingreso: julio-2008
Ubicación: Caldas, Antioquia, Colombia
Mensajes: 81
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Archivos descargados desde PHP se dañan

Bueno ya casi voy dando con el error...

Creo que el problema está en la codificación. Lo creo por algo que pasando también en otro parte de la aplicación (y nada tiene que ver con exportaciones o descarga de archivos). En una parte de la aplicación recupero algunos datos por medio de Ajax a un formulario de ingreso. sin embargo cuando miraba la consulta insert, observaba que algunos datos tenían éste símbolo anteponiéndose a ellos: . Esto me está enloqueciendo la aplicación (La aplicación no la hice yo, se llama SugarCRM y la estoy modificando). Entonces me dió por cambiar la codificación del navegador de UTF-8 a ISO8859-1 y oh sorpresa! éste símbolo () me aparece dos veces al principio y luego me aparece en cada uno de los datos que yo guardo y que fueron recuperados por Ajax.

Aún así, después de haber encontrado ésto... sigo estando muy perdido... no sé qué modificar. O a qué se debe este error. Sigo sin entender porqué de un momento a otro la aplicación se dañó. Porque esto no siempre ha pasado... sólo desde ayer.

Saludos y espero ansioso su colaboración.
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 20:09.