Foros del Web » Programando para Internet » PHP »

X-SendFile - no baja el archivo exacto

Estas en el tema de X-SendFile - no baja el archivo exacto en el foro de PHP en Foros del Web. Hola a todos. sigo con el problema de bajar un archivo. http://www.forosdelweb.com/f18/ftp_f...mpleto-968466/ Como se habrán dado cuenta, ahora estoy experimentando con x-sendfile en vez d ...
  #1 (permalink)  
Antiguo 15/01/2012, 05:26
 
Fecha de Ingreso: febrero-2003
Ubicación: Costa Rica
Mensajes: 133
Antigüedad: 21 años, 2 meses
Puntos: 0
X-SendFile - no baja el archivo exacto

Hola a todos. sigo con el problema de bajar un archivo.

http://www.forosdelweb.com/f18/ftp_f...mpleto-968466/

Como se habrán dado cuenta, ahora estoy experimentando con x-sendfile en vez d ftp_fget, por varias razones y ventajas que de más está explicarles...

Y aunque en el otro hilo dije que ya lo había resuelto con ftp_nb_get, no no no, no fue así, pero no quise molestar más. Entonces dejé de usar el fget y ajusté todo (hice incorporar el módulo en el servidor para el sitio, porque no lo tenía) para probar esta nueva (para mi claro) sentencia (x-sendfile) y sus maravillosas posibilidades.

Pero sucede que todo funciona correctamente, pero el resultado final no es óptimo, el archivo baja distinto, todo pegado.

Así está el código:

$realpath = $this->downloadDir . $file;
header('X-SendFile: ' . $this->downloadDir . $file);
header('Content-Transfer-Encoding: binary');
header('Content-Type: application/octet-stream');
header("Content-Disposition:attachment; filename=\"$realpath\"");
exit;


Y estos son los resultados:
El archivo original (dentro de un .txt por ejemplo)

***************************
Código dardo debe resultarle familiar si usted sabe un idioma o dos,
y se puede utilizar la prueba del tiempo las características tales como
las clases y el cierre.

Nuevas características de Dart que sea más fácil para usted para desarrollar
y mantener software.

Dart se encuentra todavía en las primeras etapas de desarrollo, así que
por favor eche un vistazo y dinos lo que piensas
****************************

El archivo resultante

*****************************
Código dardo debe resultarle familiar si usted sabe un idioma o dos, y se puede utilizar la prueba del tiempo las características tales como las clases y el cierre. Nuevas aracterísticas de Dart que sea más fácil para usted para desarrollar y mantener software. Dart se ncuentra todavía en las primeras etapas de desarrollo, así que por favor eche un vistazo y dinos lo que piensas

*****************************
Todo pegadito. Si se abre el archivo se ven con un block de notas, se ven los saltos de renglón, pero como que no les da bolilla...

Si por ejemplo subo y bajo un archivo zip, el resultado es igual al problema del otro hilo, un winzip no lo reconoce como archivo válido.

Si alguien tiene alguna idea será bienvenida. Desde ya gracias.
Saludos
  #2 (permalink)  
Antiguo 15/01/2012, 21:38
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: X-SendFile - no baja el archivo exacto

Holas,

Probastes con quitar la opcion de Content-Transfer-Encoding ?

http://stackoverflow.com/questions/7...resume-support
http://www.jasny.net/articles/how-i-php-x-sendfile/

Saludos
__________________
.: Gildus :.
  #3 (permalink)  
Antiguo 16/01/2012, 03:35
 
Fecha de Ingreso: febrero-2003
Ubicación: Costa Rica
Mensajes: 133
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: X-SendFile - no baja el archivo exacto

Hola Gildus, gracias por responder.
Si, ya había probado esa posibilidad, https://tn123.org/mod_xsendfile/

Para mas pistas, cabe destacar que he incluido un archivo .htaccess en el dir raiz del sitio y que solo contiene:

Xsendfile on

y que estoy trabajando en un entorno windows y que el servidor desde donde se baja el archivo es Linux.

Saludos.
  #4 (permalink)  
Antiguo 16/01/2012, 08:04
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: X-SendFile - no baja el archivo exacto

Pues en los ejemplos que estaba en los links anteriores, todos tienen al final como:


header("Content-Length: ". filesize($file));
readfile($file);

y en tu ejemplo usas un exit;

Yo he probado con:

header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
header("Content-Length: ". filesize($file));
readfile($file);

Y me va bien.

Saludos
__________________
.: Gildus :.
  #5 (permalink)  
Antiguo 16/01/2012, 15:01
 
Fecha de Ingreso: febrero-2003
Ubicación: Costa Rica
Mensajes: 133
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: X-SendFile - no baja el archivo exacto

Hola Gildus, gracias por responder, pero:

El exit del final está allí porque las sentencias que copie y pegue están dentro de un if y sale por allí, se puede sacar y la cosa es igual.

No uso readfile y si x-sendfile, porque además de su eficiencia, los archivos a transmitir son grandes.

Y por sobre todo, ya he probado readfile y el resultado es exactamente igual. Es más, originalmente usaba en ese programa readfile, y buscando y buscando para poder solucionar el error, me topé con el x-sendfile y al estudiar sus ventajas, supuse que mataba dos pájaros de un tiro, usaba una sentencia (o módulo) más eficiente y solucionaba el problema inicial de la diferencia entre el archivo original y el transmitido.

Bueno, así las cosas, gracias igual, seguiré estudiando e investigando a ver si resuelvo esto que ya me tiene un poco impaciente...
Saludos.

Etiquetas: baja, exacto
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 06:49.