Foros del Web » Programando para Internet » PHP »

fopen escribe el nombre del archivo en primera linea!

Estas en el tema de fopen escribe el nombre del archivo en primera linea! en el foro de PHP en Foros del Web. Vengo trabajando sobre un archivo .TRA, generandolo con PHP. Hasta hace 30mins atras todo iba bien. Pero ahora a fopen se le ocurre escribir el ...
  #1 (permalink)  
Antiguo 12/09/2011, 13:52
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
fopen escribe el nombre del archivo en primera linea!

Vengo trabajando sobre un archivo .TRA, generandolo con PHP. Hasta hace 30mins atras todo iba bien. Pero ahora a fopen se le ocurre escribir el nombre del archivo en la primera linea sin que yo se lo pida

Esto es lo que tengo:

Código PHP:
$handle fopen($the_file'w');

fclose($handle); 
Eso me imprime /home/guillermo/www/tiens/application/downloads/33/tranfsep.TRA en la primera linea del archivo generado. Como puede ser! Lo que muestro ni siquiera incluye linea fwrite, porque las eliminé para hacer el debug.
  #2 (permalink)  
Antiguo 12/09/2011, 14:01
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: fopen escribe el nombre del archivo en primera linea!

Ehh hice la prueba y no me creo nada en la primera línea
Código PHP:
Ver original
  1. <?php
  2. $handle = fopen('a.TRA', 'w');
  3.  
  4. fclose($handle);
¿Es obligatorio usar fopen? Porque existe file o file_get_contents y file_put_contents para ingresar el contenido.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 12/09/2011, 14:30
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: fopen escribe el nombre del archivo en primera linea!

Mira, a mi tampoco me agregaba la linea. Pero de repente lo hace y es rarisimo. No entiendo. El manual no dice nada de eso y no hay data en la web.

Lo de fopen es una manera. Intentaré la que mencionaste alternativamente.
  #4 (permalink)  
Antiguo 12/09/2011, 14:38
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: fopen escribe el nombre del archivo en primera linea!

Es de locos.

Probe esto:

Código PHP:
Ver original
  1. $ficticio = "alpha beta";
  2. file_put_contents($the_file, $ficticio);

Y obtengo:

Cita:
/home/guillermo/www/tiens/application/downloads/1/tranfsep.TRAalpha beta
  #5 (permalink)  
Antiguo 12/09/2011, 14:54
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: fopen escribe el nombre del archivo en primera linea!

Encontré el error! Al forzar la descarga del archivo tenía un echo $file antes de todo esto:

Código PHP:
Ver original
  1. header('Pragma: public');     // required  
  2.     header('Expires: 0');        // no cache  
  3.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');  
  4.     header('Last-Modified: '.gmdate ('D, d M Y H:i:s', filemtime ($file)).' GMT');  
  5.     header('Cache-Control: private',false);  
  6.     header('Content-Type: '.$type);  
  7.     header('Content-Disposition: attachment; filename="'.basename($file).'"');  
  8.     header('Content-Transfer-Encoding: binary');  
  9.     header('Content-Length: '.filesize($file));  
  10.     header('Connection: close');  
  11.     readfile($file);  
  12.     exit();

Como esto termina con readfile(), el script estaba tomando la linea de debug como parte del contenido a bajar. :(

Etiquetas: fopen, nombre, primera
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:12.